Cod sursa(job #1801146)

Utilizator alexandra_paticaAndreea Alexandra Patica alexandra_patica Data 8 noiembrie 2016 18:22:25
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <fstream>
using namespace std;
ifstream f ("transport.in");
ofstream g ("transport.out");
long long n, k, u, a[16001], p, m, i;
int verif (int m)
{
    int s=0, nr=0;
    for (int i=n; i>0; i--){
        if (s+a[i]<=m) s+=a[i];
        else{
            s=a[i];
            nr++;
        }
//        g << s << '\n';
        if (a[i]>m) {
//            g << '\n';
            return 0;
        }
    }
//    g << " ";
    nr++;
//    g << nr << '\n' << '\n';
    if (nr<=k) return 1;
    return 0;
}
int main ()
{
    f >> n >> k;
    u=0;
    for (i=n; i>0; i--)
        f >> a[i], u+=a[i];
    p=0;
    while (p<=u){
        m=p+(u-p)/2;
//        g << m << " ";
////        g << verif(m) << "  ";
//        g << p << " " << m << " " << u << '\n';
        if (verif(m)) u=m-1;
        else p=m+1;
    }
//    g << '\n';
    g << p;
    return 0;
}