Cod sursa(job #1507006)

Utilizator Ruxandra985Nanu Ruxandra Laura Ruxandra985 Data 21 octombrie 2015 10:44:58
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <fstream>

using namespace std;
int v[16001];
int main()
{
    FILE *fin=fopen ("transport.in","r");
    FILE *fout=fopen ("transport.out","w");
    int n,k,i,maxi,j,drm,s,stg,dr;
    fscanf (fin,"%d %d",&n,&k);
    maxi=0;
    for (i=0;i<n;i++){
        fscanf (fin,"%d",&v[i]);
        if (maxi<v[i]) maxi=v[i];
    }
    stg=maxi;
    dr=n*maxi;
    while (stg<=dr){
        i=0;
        maxi=(stg+dr)/2;
        drm=0;
        while (i<n){
            j=i;
            s=v[j];
            while (j<n && s<maxi){
                j++;
                s+=v[j];
            }
            if (s==maxi)
                j++;
            i=j;
            drm++;
        }
        if (drm>k)
            stg=maxi+1;
        else dr=maxi-1;

    }
    fprintf (fout,"%d\n",stg);
    return 0;
}