Cod sursa(job #1504750)

Utilizator andreiskiorAndrei Cristian Nastase andreiskior Data 18 octombrie 2015 10:45:00
Problema Transport Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <fstream>
#include <iostream>

using namespace std;

int main()
{
    ifstream fin("transport.in");
    ofstream fout("transport.out");
    int s[16000],n,k,kc,sc,minim,mijloc,maxim=0,i,sol;
    fin>>n>>k;
    fin>>s[0];
    minim=s[0];
    for(i=1;i<n;++i){
        fin>>s[i];
        maxim+=s[i];
        if(s[i]>minim) minim=s[i];
    }
    --minim;
    while(minim<=maxim)
    {
        mijloc=(minim+maxim)/2;
        sc=0;
        kc=0;
        for(i=0;i<n;++i)
        {
            sc+=s[i];
            if(sc>mijloc) {++kc;sc=s[i];}
        }
        if(sc!=0) ++kc;
        if(kc<=k) {sol=mijloc;maxim=mijloc-1;}
        else minim=mijloc+1;
    }
    fout<<sol;
    return 0;
}