Cod sursa(job #1378515)

Utilizator preda.andreiPreda Andrei preda.andrei Data 6 martie 2015 12:42:22
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <iostream>
#include <stdio.h>

using namespace std;

int v[16001];

int main()
{
    FILE* fin=fopen("transport.in", "r");
    FILE* fout=fopen("transport.out", "w");

    int n, k, s=0, s2, nr=100000, c=0, ld, ls, sol, csol;
    fscanf(fin, "%d%d", &n, &k);
    for(int i=1; i<=n; i++){
        fscanf(fin, "%d", &v[i]);
        s=s+v[i];
        if(v[i]>c)
            c=v[i];
    }
    sol=ls=c;
    ld=s;
    while(ls<=ld){
        nr=0;
        s2=0;
        sol=(ls+ld)/2;
        for(int i=1; i<=n; i++){
            s2=s2+v[i];
            if(s2>sol){
                nr++;
                s2=v[i];
            }
        }
        nr++;
        if(nr<=k){
            ld=sol-1;
            csol=sol;
        }
        else{
            ls=sol+1;
            csol=sol+1;
        }
    }
    fprintf(fout, "%d", csol);
    return 0;
}