Cod sursa(job #1670691)

Utilizator radu.millio15Radu Millio radu.millio15 Data 31 martie 2016 22:20:21
Problema Transport Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <iostream>
#include <stdio.h>
using namespace std;
int v[16005];
int main()
{
    int n,k,i,s,st,dr,med,sum,ok,tr,last;
    FILE *fin, *fout;
    fin=fopen("transport.in", "r");
    fout=fopen("transport.out", "w");
    fscanf(fin, "%d%d", &n, &k);
    s=0;
    for(i=1; i<=n; i++)
    {
        fscanf(fin, "%d", &v[i]);
        s=s+v[i];
    }
    st=1;
    dr=s;
    while(st<=dr)
    {
        med=(st+dr)/2;
        sum=0;
        ok=1;
        tr=0;
        for(i=1; i<=n; i++)
        {
            if(sum+v[i]<=med)
                sum=sum+v[i];
            else ok=0;
            if(ok==0)
            {
                sum=v[i];
                tr++;
                ok=1;
            }
        }
        if(tr<k)
        {
            last=med;
            dr=med-1;
        }
        else
            st=med+1;
    }
    fprintf(fout, "%d", last);
    fclose(fin);
    fclose(fout);
    return 0;
}