Cod sursa(job #623959)

Utilizator pauldbPaul-Dan Baltescu pauldb Data 21 octombrie 2011 09:45:16
Problema Grupuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include<cstdio>

const int V = 100001;
int n,k,a[V];
long long s[V], sol;

bool verif(long long x)
{
	int dr=n,st=1,val=0;
	while(st<=dr)
	{
		int m=(st+dr)/2;
		if(x>=a[m]) 
		{
			st=m+1;
			val=m;
		}	
		else
		{
			dr=m-1;
		}	
	}
	return s[val]/x + n-val >= k;
}	
int main()
{
	freopen("grupuri.in","r",stdin);
	freopen("grupuri.out","w",stdout);
	scanf("%d%d",&k,&n);
	for(int i=1;i<=n;++i)
	{
		scanf("%d",&a[i]);
		s[i]=s[i-1]+a[i];
	}	
	long long st=0;
	long long dr=s[n]/k;

	while (st <= dr) {
		long long m = (st+dr) / 2;
		if (verif(m)) {
			sol = m;
			st = m+1;
		} else {
			dr = m-1;
		}
	}
	printf("%lld\n",sol);
	return 0;
}