Cod sursa(job #71176)

Utilizator Binary_FireFlorin Pogocsan Binary_Fire Data 9 iulie 2007 17:34:12
Problema Grupuri Scor 98
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <cstdio>
#include <algorithm>
#define fin  "grupuri.in"
#define fout "grupuri.out"
#define Nmax 100001
#define Max  10000000069LL

using namespace std;

int N,K,v[Nmax];
long long lo,hi,m;

int bun()
{
	int i;
	long long curri,currj,tmp;

	curri=0; currj=1;
	for (i=1;i<=N;++i)
	{
		if ((long long)v[i]>m)
			tmp=m;
		else
			tmp=(long long)v[i];
		curri+=tmp;
		if (curri>=m)
		{	
			curri-=m;
			++currj;
		}
	}
	if (currj>K) 
		return 1;
	return 0;
}

int main() 
{
	int i;

	freopen(fin,"r",stdin);
	freopen(fout,"w",stdout);

	scanf("%d%d",&K,&N);
	
	for (i=1;i<=N;++i)
		scanf("%d",&v[i]);

	lo=1; hi=Max+1;
	while (lo<=hi)
	{
		m=(lo+hi)/2;
		if (bun()==0)
			hi=m-1;
		else
			lo=m+1;	
	}	

	printf("%lld\n",hi);
	
	return 0;
}