Cod sursa(job #2279581)

Utilizator myshu123Seuleanu Mihnea myshu123 Data 9 noiembrie 2018 19:22:36
Problema Transport Scor 100
Compilator cpp-32 Status done
Runda Arhiva de probleme Marime 0.65 kb
#include<fstream>
using namespace std;
int v[16001];
int n, k, i, s, maxim, st, dr, c, t, ramas;

ifstream fin ("transport.in");
ofstream fout ("transport.out");

int main()
{
    fin>>n>>k;
    for(i=1;i<=n;i++){
        fin>>v[i];
        s += v[i];
        if(v[i]>maxim)
            maxim=v[i];
    }
    st=maxim;
    dr=s;
    while(st<=dr){
       c=(st+dr)/2;
       t=1;
       ramas=c-v[1];
       for(i=2;i<=n;i++)
        if (v[i]<=ramas)
            ramas=ramas-v[i];
       else{
        t++;
        ramas=c-v[i];}
    if(t<=k)
        dr=c-1;
    else
        st=c+1;


    }
    fout<<st;
    return 0;
}