Cod sursa(job #953289)

Utilizator BLz0rDospra Cristian BLz0r Data 25 mai 2013 17:43:49
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <cstdio>
using namespace std;

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

int n,k,v[17001];


int verif(int a){
	int i=0,j=0,vol;
	
	while(i<=k && j<=n){
		vol=0;
		while(vol+v[j]<=a){
			vol+=v[j];
			j++;
			/*if (j>n && i<=k){
				return 1;
			}*/
		}
		i++;
	}
	if(i<=k){
		return 1;
	}
	return 0;
}

int main(){
	int m,i,dr=0,st=-1,sol;
	
	fscanf (f,"%d%d",&n,&k);
	for (i=1;i<=n;++i){
		fscanf (f,"%d",&v[i]);
		dr+=v[i];
		if (v[i]>st){
			st=v[i];
		}
	}
	
	while (st<=dr){
		m=(st+dr)/2;
		if (!verif(m)){
			st=m+1;
		}
		else{
			dr=m-1;
			sol=m;
		}
	}
	
	fprintf (g,"%d",sol);
	
	
	return 0;
}