Submission #165606

#TimeUsernameProblemLanguageResultExecution timeMemory
165606Peacher29Rice Hub (IOI11_ricehub)C++14
100 / 100
39 ms4216 KiB
#include "ricehub.h"
#include<bits/stdc++.h>

using namespace std;

class pont{
public:
	int index;
	long long ut, el;
};

vector<pont> p;

const bool operator<(const pont& p1, const pont& p2){
	return p1.index < p2.index;
}

long long L;

long long mennyi(long long e, long long i, long long u){
	return p[e].ut-p[i].ut-(i-e)*(L-p[i].index)
		  +p[u].el-p[i].el-(u-i)*p[i].index;
}

int besthub(int n, int l, int x[], long long b)
{
	L=l;
	int er=0;
	p.resize(n);
	for(int i=0;i<n;i++){
		p[i].index=x[i];
	}
	sort(p.begin(),p.end());
	p[0].el=p[0].index;
	for(int i=1;i<n;i++){
		p[i].el=p[i-1].el+p[i].index;
	}
	p[n-1].ut=l-p[n-1].index;
	for(int i=n-2;i>=0;i--){
		p[i].ut=p[i+1].ut+l-p[i].index;
	}
	for(int i=0;i<n;i++){
		int aa=i, bb = n-1, k;
		while(aa!=bb){
			k=(aa+bb) /2+1;
			if(mennyi(i, (i+k)/2,k)<=b){
				aa=k;
			} else {
				bb=k-1;
			}
		}
		er=max(er,aa-i+1);
	}
return er;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...