Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define X first
- #define Y second
- #define in(a, x) ((a).find(x) != (a).end())
- using namespace std;
- const int maxn = 1e5;
- void NO()
- {
- cout << "Impossible";
- exit(0);
- }
- int main()
- {
- ios_base::sync_with_stdio(false);
- cin.tie(nullptr);
- int n, sum = 0;
- cin >> n;
- int ans = 1e9;
- vector <int> c(n), d(n);
- for (int i = 0; i < n; i++) {
- cin >> c[i] >> d[i];
- sum += c[i];
- }
- int l = -3e7, r = 3e7, m;
- while (r - l > 1)
- {
- m = (l + r) / 2;
- int k = m;
- bool flag = false;
- for (int i = 0; i < n; i++)
- {
- if (i == 0)
- {
- if (d[i] == 2 && k >= 1900)
- flag = true;
- k += c[i];
- }
- else
- {
- if (d[i] == 2 && k >= 1900)
- flag = true;
- k += c[i];
- }
- }
- if (!flag)
- l = m;
- else
- r = m;
- }
- if (r == 3e7)
- {
- cout << "Infinity";
- return 0;
- }
- int k = l;
- for (int i = 0; i < n; i++)
- {
- if (k < 1900 && d[i] == 1)
- NO();
- if (k >= 1900 && d[i] == 2)
- NO();
- k += c[i];
- }
- cout << k;
- return 14/88;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement