Cod sursa(job #1185521)

Utilizator antanaAntonia Boca antana Data 15 mai 2014 21:54:50
Problema Transport Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <cstdio>

using namespace std;
int v[16001];
int main()
{
    FILE *fin, *fout;
    fin=fopen("transport.in", "r");
    fout=fopen("transport.out", "w");
    int suma=0, n, i, l1, l2, k, sumap=0, ks, mij;
    fscanf(fin, "%d%d", &n, &k);
    for(i=1;i<=n;i++)
    {
        fscanf(fin, "%d", &v[i]);
        suma=suma+v[i];
    }
    l1=1;
    l2=suma;
    while(l1<=l2)
    {
        ks=0;
        mij=(l1+l2)/2;
        sumap=0;
        for(i=1;i<=n;i++)
        {

            if(sumap+v[i]>=mij)
            {
                ks++;
                sumap=v[i];
            }
            else sumap=sumap+v[i];
        }
        if(ks>k)
            l1=mij+1;
        else l2=mij-1;
    }
    fprintf(fout, "%d", mij);
    return 0;
}