题意:
在cf系统中,给定一个人每次比赛所属的div及比赛之后的分数变化。计算经过这些比赛之后此人的rating最高可能是多少。
思路:
模拟。
实现:
1 #include <cstdio> 2 #include <iostream> 3 #include <algorithm> 4 using namespace std; 5 6 const int INF = 0x3f3f3f3f; 7 8 int n, minn = -INF, maxn = INF, c, x; 9 int main() 10 { 11 scanf("%d", &n); 12 bool flag = true; 13 for (int i = 0; i < n; i++) 14 { 15 scanf("%d %d", &c, &x); 16 if (x == 1) 17 { 18 minn = max(minn, 1900); 19 } 20 else if (x == 2) 21 { 22 maxn = min(maxn, 1899); 23 } 24 maxn += c; 25 minn += c; 26 if (maxn < minn) 27 { 28 flag = false; 29 break; 30 } 31 } 32 if (!flag) 33 puts("Impossible"); 34 else if (maxn >= INF - 2e7) 35 puts("Infinity"); 36 else 37 printf("%d ", maxn); 38 return 0; 39 }