Advertisement
Guest User

Untitled

a guest
Jan 1st, 2017
240
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.36 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. #define X first
  4. #define Y second
  5. #define in(a, x) ((a).find(x) != (a).end())
  6.  
  7. using namespace std;
  8.  
  9. const int maxn = 1e5;
  10.  
  11. void NO()
  12. {
  13.     cout << "Impossible";
  14.     exit(0);
  15. }
  16.  
  17. int main()
  18. {
  19.     ios_base::sync_with_stdio(false);
  20.     cin.tie(nullptr);
  21.  
  22.     int n, sum = 0;
  23.     cin >> n;
  24.     int ans = 1e9;
  25.  
  26.     vector <int> c(n), d(n);
  27.     for (int i = 0; i < n; i++) {
  28.         cin >> c[i] >> d[i];
  29.         sum += c[i];
  30.     }
  31.  
  32.     int l = -3e7, r = 3e7, m;
  33.     while (r - l > 1)
  34.     {
  35.         m = (l + r) / 2;
  36.         int k = m;
  37.         bool flag = false;
  38.         for (int i = 0; i < n; i++)
  39.         {
  40.             if (i == 0)
  41.             {
  42.                 if (d[i] == 2 && k >= 1900)
  43.                     flag = true;
  44.  
  45.                 k += c[i];
  46.             }
  47.             else
  48.             {
  49.                 if (d[i] == 2 && k >= 1900)
  50.                     flag = true;
  51.                 k += c[i];
  52.             }
  53.         }
  54.  
  55.         if (!flag)
  56.             l = m;
  57.         else
  58.             r = m;
  59.     }
  60.     if (r == 3e7)
  61.     {
  62.         cout << "Infinity";
  63.         return 0;
  64.     }
  65.     int k = l;
  66.     for (int i = 0; i < n; i++)
  67.     {
  68.         if (k < 1900 && d[i] == 1)
  69.             NO();
  70.         if (k >= 1900 && d[i] == 2)
  71.             NO();
  72.  
  73.         k += c[i];
  74.     }
  75.     cout << k;
  76.     return 14/88;
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement