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 "ricehub.h"
#include <bits/stdc++.h>
using namespace std;
#define ll long long
int besthub(int R, int L, int a[], long long B)
{
long long dp[100001];
dp[0]=0;
for(int i=1;i<R;i++){
dp[i]=dp[i-1]+(ll)a[i]-(ll)a[0];
}
ll l=1,r=R;
while(l!=r){
ll mid=(l+r)>>1,flag=0;
for(ll i=mid-1;i<(ll)R;i++){
ll MID=(i*2+1-mid)>>1;
ll left=i+1-mid;
long long cost=dp[i]-dp[MID]-((i-MID)*((ll)a[MID]-(ll)a[0]))+(((ll)a[MID]-(ll)a[left])*(MID-left+1)-(dp[MID]-dp[left]-(MID-left)*((ll)a[left]-(ll)a[0])));
if(cost<=B){
flag++;
break;
}
}
if(flag==0) r=mid;
else l=mid+1;
}
ll flag=0;
for(ll i=l-1;i<(ll)R;i++){
ll MID=(i*2+1-l)>>1;
ll left=i+1-l;
long long cost=dp[i]-dp[MID]-((i-MID)*((ll)a[MID]-(ll)a[0]))+(((ll)a[MID]-(ll)a[left])*(MID-left+1)-(dp[MID]-dp[left]-(MID-left)*((ll)a[left]-(ll)a[0])));
if(cost<=B){
flag++;
break;
}
}
if(flag>0) return l;
return l-1;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |