Cod sursa(job #414688)

Utilizator mihaipopa12Popa Mihai mihaipopa12 Data 10 martie 2010 13:09:34
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.54 kb
#include<stdio.h>
FILE*f=fopen("transport.in","r");
FILE*g=fopen("transport.out","w");
int n,k,p,u,v[16001],i,cc,tr,c;
int main () {
	fscanf(f,"%d %d",&n,&k);
	u=0;
	for(i=1;i<=n;i++){
		fscanf(f,"%d",&v[i]);
		u+=v[i];
		if(p<v[i])
			p=v[i];
	}
	while(p<=u){
		c=p+(u-p)/2;
		tr=0;
		cc=0;
		for(i=1;i<=n;i++){
			if(v[i]+cc<=c)
				cc+=v[i];
			else{
				tr++;
				cc=v[i];
			}
		}
		if(cc!=0)
			tr++;
		if(tr>k){
			p=c+1;
		}
		else
			u=c-1;
	}
	fprintf(g,"%d",p);
	
	
	fclose(f);
	fclose(g);
	return 0;
}