Cod sursa(job #977236)

Utilizator TibixbAndrei Tiberiu Tibixb Data 25 iulie 2013 11:02:16
Problema Transport Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include<cstdio>
#include <fstream>
using namespace std;
int minim, v[16005], p, u, s, mij, n, k, i; 
FILE *fin=fopen("transport.in", "r");
ofstream fout("transport.out");
int trece(int g){	
	//testam daca cu capacitatea g pute realiza k transporturi
	int t=1;
	int cc=g;
	for(int i=1; i<=n; i++){
		if(cc>=v[i])
			cc-=v[i];
		else{
			t++;
			cc=g-v[i];
		}
		if(t>k)
			break;
	}
	if(t<=k)
		return 1;
	else 
		return 0;
}
int main(){
	minim=16002;
	fscanf(fin,"%d%d",&n, &k);
	for(i=1; i<=n; i++){
		fscanf(fin, "%d", &v[i]);
		if(v[i]<minim)
			minim=v[i];
		s+=v[i];
	}
	p=minim; u=s;
	while(p<=u){
		mij=(u+p)/2;
		if(trece(mij)){
			u=mij-1;
		}
		else{
			p=mij+1;
		}
	}
	fout<<p;
	return 0;
}