Thursday, January 14, 2016

UVa 11935 - Through the Desert

Accepted date: 2016-01-14
Run Time: 0.000
Ranking (as of 2016-01-14): 63 out of 622
Language: C++

/*
  UVa 11935 - Through the Desert

  To build using Visual Studio 2012:
    cl -EHsc -O2 UVa_11935_Through_the_Desert.cpp
*/

#include <algorithm>
#include <cstdio>
using namespace std;

int main()
{
  double distance_per_litre = 100.0;
  while (true) {
    int p, n;
    const int nr_chars_max = 15;
    char s[nr_chars_max + 1];
    scanf("%d %s %*s %d", &p, s, &n);
    if (!n)
      break;
    int pp = p, l = 0;
    double tank = 0.0, max_tank = 0.0;
    bool goal = false;
    do {
      scanf("%d %s", &p, s);
      int d = p - pp;
      pp = p;
      tank += d / distance_per_litre * n + d * l;
      max_tank = max(max_tank, tank);
      switch (s[0]) {
      case 'F': // "Fuel"
        scanf("%*s %d", &n);
        break;
      case 'L':
        l++;
        break;
      case 'G':
        if (s[1] == 'a') {
          scanf("%*s");
          tank = 0.0;
        }
        else
          goal = true;
        break;
      case 'M':
        l = 0;
        break;
      }
    } while (!goal);
    printf("%.3lf\n", max_tank);
  }
  return 0;
}

No comments:

Post a Comment