Cod sursa(job #434853)

Utilizator maditzaaciuca madalina maditzaa Data 6 aprilie 2010 17:33:35
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.56 kb
#include<fstream.h>

ifstream f("transport.in");
ofstream g("transport.out");

#define MAXX 16010

int v[MAXX];
int suma, u, m, max,n, k, p ,i;
int pot(int c){
	int nr=1, cc=0;
	for(int i=1;i<=n;i++){
		if(cc+v[i]<=c)
			cc+=v[i];
		else{
			nr++;
			cc=v[i];
		}
		
	}
	if(nr>k) return 0;
	else
		return 1;
}
int main(){
	f>>n>>k;
	for(i=1;i<=n;i++){
		f>>v[i];
		suma+=v[i];
		if(v[i]>max) max=v[i];
	}
	p=max; u=suma;
	while(p<=u){
		m=(p+u)/2;
		if(pot(m))
			u=m-1;
		else 
			p=m+1;
	}
	g<<p;
	f.close();
	g.close();
	return 0;
}