Cod sursa(job #428455)

Utilizator Negrimongwriter Negrimon Data 29 martie 2010 11:54:06
Problema Grupuri Scor 12
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include<stdio.h>
#define Nmax 100000

using namespace std;

int s,n,k,a[Nmax],b[Nmax],ss;

void citire();
int cb(int in,int sf);
int verif(int X);


int main()
{
	freopen("grupuri.in","r",stdin);
	freopen("grupuri.out","w",stdout);
	citire();
	if (verif(s/k)) printf("%ld",s/k);
	else 
	{
		ss=cb(1,s/k);
		printf("%ld",ss);
	}
	return 0;
}

int verif(int X)
{
	int z=0,i=n,sa=k*X;
	while (a[i]>=X&&i>n-k)
	{
		++z;
		--i;
	}
	if (i==n-k) return 1;
	if (b[n-z]>=sa-z*X) return 1;
	return 0;
}
	

void citire()
{
	int i;
	scanf("%ld%ld",&k,&n);
	for (i=1;i<=n;++i)
	{
		scanf("%ld",&a[i]);
		s+=a[i];
		b[i]=s;
	}
}

int cb(int in,int sf)
{
	int mij,ok1;//in=1,sf=s/k;
	mij=in+(sf-in)/2;
	ok1=verif(mij);
	if (ok1) 
		return cb(mij,sf);
	return cb(in,mij);
	return in;
}