Cod sursa(job #262717)

Utilizator ssergiussSergiu-Ioan Ungur ssergiuss Data 19 februarie 2009 16:34:49
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.61 kb
#include<algorithm>
using namespace std;
int n,k,a[16001];
void solve(){
    int i,s,m,st,dr,min,max,cont;
    scanf("%d%d",&n,&k);
    for(i=1,max=s=0; i<=n; ++i){
        scanf("%d",&a[i]);
        if(a[i]>max)
            max=a[i];
        s+=a[i];}
    for(st=max,dr=s; st<=dr; ){
		m=(st+dr)/2;
		for(i=cont=1,s=0; i<=n; ++i)
			if(s+a[i]<=m)
				s+=a[i];
			else{
				++cont;
				s=a[i];}
		if(cont>k)
            st=m+1;
		else{
			min=m;
			dr=m-1;}}
	printf("%d",min);}
int main(){
	freopen("transport.in","r",stdin);
	freopen("transport.out","w",stdout);
    solve();
    return 0;}