Cod sursa(job #282556)

Utilizator dexter_dexMutascu Adrian - Dragos dexter_dex Data 17 martie 2009 21:45:39
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include<stdio.h>

int n,k,i,v[16010],S=0,max=-1,s,d,m,k2,x,sol;

FILE *f=fopen("transport.in","r");
FILE *g=fopen("transport.out","w");

int ok(){
	S = 0;
	k2 = 0; 
	for (i=1;i<=n;i++)
		if (S+v[i] <= m) 
			S += v[i];
		else {
			k2 = k2 + 1;
			S = v[i];
			
		}
	k2++;	
			
	
	if (k2 <= k ) return 1;
	return 0;
}
	
int main (){
	
	fscanf(f,"%d %d",&n,&k);
	
	for (i=1 ; i<=n ; i++){
		fscanf(f,"%d",&v[i]);
		S += v[i];
		

		if (v[i] > max) 
			max = v[i];
	}
	
	s = max; 
	d = S;
	while (s <= d){
		m = s+(d-s)/2;
		k2 = 0;
		x = ok();
		if (x == 1) {
			sol = m;
			d = m-1;
		}
		else s = m+1;
	}
	
	fprintf(g,"%d",sol);
	
	fclose(f);
	fclose(g);
	return 0;
}