Cod sursa(job #1641587)

Utilizator blackmanta45Andrei blackmanta45 Data 9 martie 2016 07:57:31
Problema Transport Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.22 kb
#include <fstream>
using namespace std;
ifstream fin ("transport.in");
ofstream fout ("transport.out");
int n,s,k,st,v[16010],m,dr,maxim,i,j,mid,c,x;
int main () {
    fin >>n>>k;
    s=0;
    maxim=-1000000;
    for (i=1;i<=n;i++){
        fin>>v[i];
        s=s+v[i];
        if(v[i]>maxim)
            maxim=v[i];
    }
    st=maxim;
    dr=s;
    while (st<=dr){
        mid=(st+dr)/2;
        maxim=-1;
        c=0;
        s=0;
        for(i=1;i<=n;i++){
            s=s+v[i];
            if(s+v[i+1]>mid){
                c++;
                s=0;
            }
            if(i==n && s!=0)
                c++;
        }
        if(c==k){
            m=c;
            for(i=mid;i>=1;i--){
                c=0;
                for(j=1;j<=n;j++){
                    s=s+v[j];
                    if(s+v[j+1]>i){
                        c++;
                        s=0;
                    }
                    if(j==n && s!=0)
                        c++;
                }
                if(c>k){
                    fout<<i+1;
                    return 0;
                }
            }
        }
        if(c>k)
            st=mid+1;
        else
            dr=mid-1;
    }


}