Cod sursa(job #1508476)

Utilizator Julian.FMI Caluian Iulian Julian. Data 22 octombrie 2015 16:47:37
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <iostream>
#include <fstream>
#define nmax 16009
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");

int suma[nmax];

int main()
{int n,k,x,i,in,nr,ls,ld,cap,maxim=-1,finali;
    suma[0]=0;

    fin>>n>>k;
    for(i=1;i<=n;i++)
       {fin>>x;if(x>maxim)maxim=x;
        suma[i]=suma[i-1]+x;}

    ls=0;
    ld=suma[n];
    while(ls<=ld)
    {cap=(ls+ld)/2;

    if(cap>=maxim)
    {in=0;nr=1;i=1;

        while(i<=n)
         { if(suma[i]-suma[in]>cap)
             {in=i-1;nr++;}
           i++; }

    }else nr=k+1;
    if(nr<=k){ld=cap-1;finali=cap;}
        else ls=cap+1;
    }

    fout<<finali;
}