Run Time: 0.060
Ranking (as of 2016-04-13): 13 out of 457
Language: C++
/* UVa 12673 - Football To build using Visual Studio 2012: cl -EHsc -O2 UVa_12673_Football.cpp */ #include <algorithm> #include <cstdio> using namespace std; const int N_max = 100000, G_max = 1000000; int loses[N_max]; int main() { int N, G; while (scanf("%d %d", &N, &G) != EOF) { int nr_draws = 0, nr_loses = 0, points = 0; while (N--) { int S, R; scanf("%d %d", &S, &R); if (S > R) points += 3; else if (S == R) nr_draws++; else loses[nr_loses++] = R - S; } sort(loses, loses + nr_loses); if (G > nr_draws) { points += nr_draws * 3; G -= nr_draws, nr_draws = 0; } else { points += G * 3; nr_draws -= G, G = 0; points += nr_draws; } for (int i = 0; i < nr_loses; i++) { if (G < loses[i]) break; if (G > loses[i]) { points += 3; G -= loses[i] + 1; } else { points++; G -= loses[i]; } } printf("%d\n", points); } return 0; }
No comments:
Post a Comment