Submission #340238

#TimeUsernameProblemLanguageResultExecution timeMemory
340238KerimRice Hub (IOI11_ricehub)C++17
Compilation error
0 ms0 KiB
#include "bits/stdc++.h"
#define MAXN 100009
#define INF 1000000007
#define mp(x,y) make_pair(x,y)
#define all(v) v.begin(),v.end()
#define pb(x) push_back(x)
#define wr cout<<"----------------"<<endl;
#define ppb() pop_back()
#define tr(ii,c) for(typeof((c).begin()) ii=(c).begin();ii!=(c).end();ii++)
#define ff first
#define ss second

using namespace std;

typedef long long ll;
typedef pair<int,int> PII;
template<class T>bool umin(T& a,T b){if(a>b){a=b;return 1;}return 0;}
template<class T>bool umax(T& a,T b){if(a<b){a=b;return 1;}return 0;}
const int error=0xFFFFFFF;
int n,l,mx=1;
ll b;
ll arr[MAXN],par[MAXN];
ll sum(int left,int right){
	return par[right]-par[left-1];
}
int ok(int type,int ind,int x){
	int st=0,en=x;
	while(st+1<en){
		int mid=(st+en)>>1;
		int dim=x-mid;
		ll budget=0;
		ll pul=0;
		if(ind-dim<1){
			st=mid;
			continue;
		}
		if(ind+mid-1>n){
			en=mid;	
			continue;
		}
		if(dim)
			budget=(dim*arr[ind]-sum(ind-dim,ind-1));
		if(mid)
			pul=(sum(ind,ind+mid-1)-mid*arr[ind]);
		if(pul+budget<=b)
			return 1;
		if(type==1)	
			en=mid;	
		else
			st=mid;
	}
	for(int mid=st;mid<=en;mid++){
		int dim=x-mid;
		ll budget=0;
		ll pul=0;
		if(ind-dim<1 or ind+mid-1>n)
			continue;
		if(dim)
			budget=(dim*arr[ind]-sum(ind-dim,ind-1));
		if(mid and ind+mid-1<=n)
			pul=(sum(ind,ind+mid-1)-mid*arr[ind]);
		if(pul+budget<=b)
			return 1;
	}
	return 0;
}
int go(int x){
	int st=1,en=n;
	while(st+1<en){
		int mid=(st+en)>>1;
		if(ok(1,x,mid) or ok(2,x,mid))
			st=mid;
		else
			en=mid;	
	}
	for(int i=en;i>=st;i--)
		if(ok(1,x,i) or ok(2,x,i))
			return i;
	return error;		
}
int main(){
	scanf("%d%d%lld",&n,&l,&b);
	for(int i=1;i<=n;i++){
		scanf("%lld",arr+i);
		par[i]=par[i-1]+arr[i];
	}
	for(int i=1;i<=n;i++)
		umax(mx,go(i));
	printf("%d\n",mx);	
	return 0;
}

Compilation message (stderr)

ricehub.cpp: In function 'int main()':
ricehub.cpp:82:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   82 |  scanf("%d%d%lld",&n,&l,&b);
      |  ~~~~~^~~~~~~~~~~~~~~~~~~~~
ricehub.cpp:84:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   84 |   scanf("%lld",arr+i);
      |   ~~~~~^~~~~~~~~~~~~~
/tmp/cc56ohkr.o: In function `main':
grader.cpp:(.text.startup+0x0): multiple definition of `main'
/tmp/cckEPEkW.o:ricehub.cpp:(.text.startup+0x0): first defined here
/tmp/cc56ohkr.o: In function `main':
grader.cpp:(.text.startup+0xae): undefined reference to `besthub(int, int, int*, long long)'
collect2: error: ld returned 1 exit status