Cod sursa(job #1909221)

Utilizator mirceagavrizimircea luca gavrizi mirceagavrizi Data 7 martie 2017 11:56:15
Problema Transport Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include<iostream>
int v[16001];
#include<stdio.h>
using namespace std;
int main(){
    freopen("transport.in","r",stdin);
    freopen("transport.out","w",stdout);
    int n,k,i,nr,maxx,c;
    long long s,p1,p2,s1,m,b;
    cin>>n>>k;
    s=0;
    maxx=-1;
    for(i=1;i<=n;i++){
        cin>>nr;
        v[i]=nr;
        s=s+nr;
        if(nr>maxx)
            maxx=nr;
    }
    p1=maxx;
    p2=s;
    while(p1<=p2){
        m=(p1+p2)/2;
        c=0;
        s1=0;
        for(i=1;i<=n;i++){
            s1=s1+v[i];
            if(s1>m){
                c++;
                i--;
                s1=0;
            }
            if(i==n&&s1<=m)
                c++;
            //cout<<i<<" "<<s1<<endl;
        }

        //cout<<m<<" "<<c<<endl;
        b=m;
        if(c>k)
            p1=m+1;
        if(c<=k)
            p2=m-1;
    }
    cout<<b;
return 0;
}