# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
91125 | Aydarov03 | Divide and conquer (IZhO14_divide) | C++14 | 1085 ms | 4152 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 1e5 + 5;
int x[N] , g[N] , e[N];
int n;
int maxg;
int l , r;
inline bool check( int mid )
{
int gold;
int lenergy;
int genergy;
for(int i = 1; i <= n; i++)
{
gold = 0;
lenergy = 0;
genergy = 0;
for(int j = i; j <= n; j++)
{
gold += g[j];
lenergy = x[j] - x[i];
genergy += e[j];
if( genergy >= lenergy && gold >= mid )return true;
}
}
return false;
}
main()
{
scanf("%lld" , &n);
for(int i = 1; i <= n; i++)
{
scanf("%lld %lld %lld" , &x[i] , &g[i] , &e[i]);
maxg += g[i];
}
r = maxg + 1;
while( r - l > 1 )
{
int mid = (l + r) / 2LL;
if( check(mid) )l = mid;
else r = mid;
}
printf("%lld" , l);
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |