Cod sursa(job #343610)

Utilizator Anamaria20Cotirlea Anamaria Anamaria20 Data 26 august 2009 15:41:23
Problema Grupuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <stdio.h>

FILE *f,*s;

long long int n,k,i,sum,rez,v[100005];

long long int cautBin()
{
	long long int st=1;
	long long int dr=sum/k+sum%k;

	long long int max=0;
	
	while(st<=dr)
	{
		int mj=(st+dr)/2;
		
		long long int x=k*mj;
		for(i=1;i<=n;i++)
		{
			if(v[i]>=mj&&x>=mj)
				x-=mj;
			
			else if(v[i]<mj&&x>=v[i])
				x-=v[i];
			
			else if(x<v[i])
			{	
				x=0;
				break;
			}	
			
		}	
		
		if(x==0&&mj>max)
			max=mj;
		
		if(x>0)
			dr=mj-1;
		
		if(x==0)
			st=mj+1;
	}

	return max;
}

int main()
{
	f=fopen("grupuri.in","r");
	s=fopen("grupuri.out","w");
	
	fscanf(f,"%lld %lld",&k,&n);
	
	for(i=1;i<=n;i++)
	{	
		fscanf(f,"%lld",&v[i]);
		
		sum+=v[i];
	}
	
	rez=cautBin();
	
	fprintf(s,"%lld\n",rez);
	
	fclose(s);
	
	return 0;
}