Submission #285081

#TimeUsernameProblemLanguageResultExecution timeMemory
285081Bill_00쌀 창고 (IOI11_ricehub)C++14
100 / 100
38 ms2560 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...