# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
580429 | yutabi | Divide and conquer (IZhO14_divide) | C++14 | 1 ms | 212 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>
using namespace std;
#define pb push_back
typedef long long ll;
typedef pair <ll,ll> ii;
ll l;
ll r;
ll m;
int n;
vector <pair <ll,ii> > s;
int main()
{
scanf(" %d",&n);
s=vector <pair <ll,ii> > (n);
for(int i=0;i<n;i++)
{
ll a,b,c;
scanf(" %lld %lld %lld",&a,&b,&c);
s[i]=make_pair(a,ii(b,c));
}
l=0;
r=1000000000000000007;
m=(l+r+1)/2;
while(l!=r)
{
bool flag=0;
ll ptr1=0,ptr2=1;
ll cost=0;
ll gold=s[0].second.first;
ll electric=s[0].second.second;
while(1)
{
if(gold<m)
{
if(ptr2<n)
{
cost+=s[ptr2].first-s[ptr2-1].first;
gold+=s[ptr2].second.first;
electric+=s[ptr2].second.second;
ptr2++;
}
else
{
break;
}
}
else
{
if(electric>=cost)
{
flag=1;
break;
}
cost+=s[ptr1].first-s[ptr1+1].first;
gold-=s[ptr1].second.first;
electric-=s[ptr1].second.second;
ptr1++;
}
}
if(flag)
{
l=m;
}
else
{
r=m-1;
}
m=(l+r+1)/2;
}
printf("%lld\n",m);
}
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... |