Cod sursa(job #264490)

Utilizator katakunaCazacu Alexandru katakuna Data 22 februarie 2009 11:00:11
Problema Grupuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <stdio.h>

int n, k, i, c[100111];
long long S,U,P,Mij,Sol;

int min(long long a, long long b){
	if(a < b)
		return a;
	
	return b;
}

int cont(long long X){
	long long scr = 0, sf = X * (long long)k;
	
	for(i = 1; i <= n; i++){
		scr+=min(c[i], X);
		if(scr >= sf)
			return 1;
	}	
	
	return 0;
}


int main(){
	FILE *f = fopen("grupuri.in","r");
	FILE *g = fopen("grupuri.out","w");
	
	fscanf(f,"%d %d",&k,&n);
	
	for(i=1; i<=n; i++){
		fscanf(f,"%d",&c[i]);
		S+=(long long)c[i];
	}
	
	P = 1;
	U = S/(long long)k;
	
	while(P <= U){
		Mij = (P + U) >> 1;
		if(cont(Mij)){
			Sol = Mij;
			P = Mij + 1;
		}
		
		else
			U = Mij - 1;
	}
	
	fprintf(g,"%lld",Sol);
	
	fclose(f);
	fclose(g);
	
	return 0;
}