Cod sursa(job #262678)

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