Cod sursa(job #1719906)

Utilizator blackmanta45Andrei blackmanta45 Data 20 iunie 2016 17:38:08
Problema Transport Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <fstream>
using namespace std;
ifstream fin ("transport.in");
ofstream fout ("transport.out");
int i,n,k,s,sol,mid,st,maxim,dr,v[16010];
int main () {
    fin>>n>>k;
    for(i=1;i<=n;i++){
        fin>>v[i];
        s=s+v[i];
        if(v[i]>maxim)
            maxim=v[i];
    }
    if(k==1){
        fout<<s;
        return 0;
    }
    st=1;
    dr=s;
    while(st<=dr){
        mid=(st+dr)/2;
        s=0;
        sol=0;
        if(mid<maxim){
            st=mid+1;
            continue;
        }
        for(i=1;i<=n;i++){
            s=s+v[i];
            if(s+v[i+1]>=mid){
                sol++;
                s=0;
            }
        }
        if(s!=0)
            sol++;
        if(sol<=k)
            dr=mid-1;
        else
            st=mid+1;
    }
    if(dr>0)
        fout<<dr;
    else
        fout<<1;
}