Cod sursa(job #2629485)

Utilizator enedumitruene dumitru enedumitru Data 21 iunie 2020 07:45:30
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.55 kb
#include <fstream>
using namespace std;
ifstream f("transport.in"); ofstream g("transport.out");
int n,k,low,up,x[16001];
int main()
{   f>>n>>k;
    for(int i=1;i<=n;++i)
    {   f>>x[i];
        up+= x[i];
        if(x[i]>low) low=x[i];
    }
    int st=low,dr=up,res;
    while(st<=dr)
    {   int med=(st+dr)/2,camioane=1,sum=0;
        for(int i=1;i<=n;++i)
            if(sum+x[i]<=med) sum+=x[i]; else {++camioane; sum=x[i];}
        if(camioane<=k) {res=med; dr=med-1;} else st=med+1;
    }
    g<<res; g.close(); f.close(); return 0;
}