1 solutions
-
0
C++ :
#include <stdio.h> #include <string.h> #include <assert.h> #include <math.h> int cCnt, canada, status; int gold[256], silver[256], bronze[256]; double score[256]; char country[256]; static const int N = 100; bool canadaWins(double g, double s, double b) { double best = -1; for (int i = 0; i < cCnt; i++) { score[i] = g * gold[i] + s * silver[i] + b * bronze[i]; if (score[i] > best) best = score[i]; } return (score[canada] >= best); } void work() { for (int g = 0; g <= 0; g++) for (int s = -2; s <= 2; s++) for (int b = -3; b <= 3; b++) if (canadaWins(pow(N, (double)-g), pow(N, (double)-s), pow(N, (double)-b))) { printf("Canada wins!\n"); return; } printf("Canada cannot win.\n"); } int main() { while (scanf("%d", &cCnt) == 1) { if (cCnt <= 0) break; canada = -1; for (int i = 0; i < cCnt; i++) { status = scanf("%s%d%d%d", country, &gold[i], &silver[i], &bronze[i]); assert(status == 4); if (strcmp(country, "Canada") == 0) { assert(canada < 0); canada = i; } } // assert(canada >= 0); if (canada < 0) printf("Canada cannot win.\n"); else work(); } return 0; }
- 1
Information
- ID
- 18720
- Time
- 1000ms
- Memory
- 128MiB
- Difficulty
- (None)
- Tags
- # Submissions
- 0
- Accepted
- 0
- Uploaded By