Cod sursa(job #1138154)

Utilizator MirunaMMiruna Mitu MirunaM Data 9 martie 2014 17:05:22
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include<stdio.h>
#include<iostream>
using namespace std;
int v[16001];
int main(){
freopen("transport.in","r",stdin);
freopen("transport.out","w",stdout);
int nr,k,i,s,l1,l2,cate,mij,min,max1;
scanf("%d%d",&nr,&k);
max1=0;
for(i=1,s=0;i<=nr;i++){
    scanf("%d",&v[i]);
    s=s+v[i];
    if(max1<v[i])
        max1=v[i];
}
l1=max1;
l2=s;
while(l1<=l2){
    s=0;
    cate=1;
    mij=(l1+l2)/2;
    for(i=1;i<=nr;i++)
        if(s+v[i]<=mij)
            s=s+v[i];
        else{
            cate++;
            s=v[i];
            }
    if(cate<=k){
        l2=mij-1;
        min=mij;
        }
    else
        l1=mij+1;
}
cout<<min;
return 0;
}