Cod sursa(job #1265706)

Utilizator cojocarugabiReality cojocarugabi Data 17 noiembrie 2014 17:14:33
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.54 kb
# include <bits/stdc++.h>
using namespace std;
ifstream fi("transport.in");
ofstream fo("transport.out");
int s[16005],n;
bool verif(int l,int k)
{
    int p=l,nm=1;
    for (int i=1;i<=n;++i)
    {
        if (s[i] <= p) p-=s[i];else ++nm,p=l-s[i];
        if (p < 0) return 0;
    }
    return (nm <= k);
}
int main(void)
{
    int k,Sum=0;
    fi>>n>>k;
    for (int i=1;i<=n;++i) fi>>s[i],Sum+=s[i];
    int p=1,u=Sum;
    while (p < u) if (verif((p+u)/2,k)) u=(u+p)/2;else p=(p+u)/2+1;
    return fo << (p+u)/2 << '\n',0;
}