#include <iomanip> #include <iostream> #include <string> using namespace std; #define ull unsigned long long enum EventType { FUEL_CONSUMPTION, LEAK, GAS_STATION, MECHANIC, GOAL }; EventType getEventType(const string& event_name) { switch (event_name[0]) { case 'F': return FUEL_CONSUMPTION; case 'L': return LEAK; case 'M': return MECHANIC; default: if (event_name[1] == 'a') return GAS_STATION; return GOAL; } } int main() { ull fuel_consumption = 0, leaks = 0, previous_kilometers = 0; double tank_capacity_needed = 0, gas_used = 0; bool end = false; while (!end) { ull kilometers; cin >> kilometers; string event_name; cin >> event_name; EventType event = getEventType(event_name); if (event == FUEL_CONSUMPTION || event == GAS_STATION) cin >> event_name; // add gas used ull driven = kilometers - previous_kilometers; previous_kilometers = kilometers; gas_used += leaks * driven; gas_used += (fuel_consumption / 100.0) * driven; // update state of car switch (event) { case FUEL_CONSUMPTION: cin >> fuel_consumption; if (fuel_consumption == 0) end = true; break; case LEAK: leaks++; break; case MECHANIC: leaks = 0; break; case GAS_STATION: if (gas_used > tank_capacity_needed) tank_capacity_needed = gas_used; gas_used = 0; break; case GOAL: if (gas_used > tank_capacity_needed) tank_capacity_needed = gas_used; gas_used = 0; cout << std::fixed << setprecision(3) << tank_capacity_needed << endl; tank_capacity_needed = 0; leaks = 0; previous_kilometers = 0; break; } } return 0; }
Friday, April 24, 2015
UVa 11935 - Through the Desert
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment