Submission #337265

# Submission time Handle Problem Language Result Execution time Memory
337265 2020-12-19T06:04:21 Z boykut Divide and conquer (IZhO14_divide) C++14
17 / 100
2 ms 384 KB
#include <bits/stdc++.h>

using namespace std;

#define int long long
#define MAXN 100000

int x[MAXN], g[MAXN], d[MAXN], n;
int prg[MAXN], prd[MAXN];
int ans = 0;

bool can (int GOLD) {
   for (int l = 0; l < n; l++) {
      int r = lower_bound(prg, prg + n, (l?prg[l-1]:0) + GOLD) - prg;
      if (r >= 0 && r < n) {
         if (x[r] - x[l] <= prd[r] - (l?prd[l-1]:0)) {
            ans = max(ans, prg[r] - (l?prg[l-1]:0));
            return true;
         }
      }
   }
   return false;
}

signed main() {
   //ios::sync_with_stdio(0);
   //cin.tie(0);
   
   cin >> n;
   
   for (int i = 0; i < n; i++) {
      cin >> x[i] >> g[i] >> d[i];
   }
   for (int i = 0; i < n; i++) {
      prg[i] = g[i];
      prd[i] = d[i];
      if (i)
         prg[i] += prg[i - 1],
         prd[i] += prd[i - 1];
   }
   
   int l = 0, r = prg[n - 1];
   while (l <= r) {
      int GOLD = (l + r) / 2;
      if (can (GOLD)) {
         l = GOLD + 1;
      } else {
         r = GOLD - 1;
      }
   }
   
   cout << ans << '\n';
   
   return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 1 ms 364 KB Output is correct
2 Correct 0 ms 364 KB Output is correct
3 Correct 1 ms 364 KB Output is correct
4 Correct 0 ms 364 KB Output is correct
5 Correct 1 ms 364 KB Output is correct
6 Correct 1 ms 364 KB Output is correct
7 Correct 1 ms 364 KB Output is correct
8 Correct 1 ms 364 KB Output is correct
9 Correct 1 ms 364 KB Output is correct
10 Correct 1 ms 364 KB Output is correct
11 Correct 1 ms 384 KB Output is correct
12 Correct 1 ms 364 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 364 KB Output is correct
2 Correct 0 ms 364 KB Output is correct
3 Correct 1 ms 364 KB Output is correct
4 Correct 0 ms 364 KB Output is correct
5 Correct 1 ms 364 KB Output is correct
6 Correct 1 ms 364 KB Output is correct
7 Correct 1 ms 364 KB Output is correct
8 Correct 1 ms 364 KB Output is correct
9 Correct 1 ms 364 KB Output is correct
10 Correct 1 ms 364 KB Output is correct
11 Correct 1 ms 384 KB Output is correct
12 Correct 1 ms 364 KB Output is correct
13 Correct 1 ms 364 KB Output is correct
14 Correct 1 ms 384 KB Output is correct
15 Correct 1 ms 364 KB Output is correct
16 Incorrect 2 ms 364 KB Output isn't correct
17 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 364 KB Output is correct
2 Correct 0 ms 364 KB Output is correct
3 Correct 1 ms 364 KB Output is correct
4 Correct 0 ms 364 KB Output is correct
5 Correct 1 ms 364 KB Output is correct
6 Correct 1 ms 364 KB Output is correct
7 Correct 1 ms 364 KB Output is correct
8 Correct 1 ms 364 KB Output is correct
9 Correct 1 ms 364 KB Output is correct
10 Correct 1 ms 364 KB Output is correct
11 Correct 1 ms 384 KB Output is correct
12 Correct 1 ms 364 KB Output is correct
13 Correct 1 ms 364 KB Output is correct
14 Correct 1 ms 384 KB Output is correct
15 Correct 1 ms 364 KB Output is correct
16 Incorrect 2 ms 364 KB Output isn't correct
17 Halted 0 ms 0 KB -