Cod sursa(job #1660327)

Utilizator dragos99Homner Dragos dragos99 Data 22 martie 2016 23:17:51
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include<fstream>
using namespace std;
long n,s,mi,ma,t,v[16001],k,x,y;
long verif(long t)
{
    long sum=0,nr=1;
    for(long i=1;i<=n && nr<=k;i++)
    {
        sum+=v[i];
        if(sum>t)
        {
            sum=v[i];
            nr++;
        }
    }
    return nr;
}
int main()
{
    ifstream f("transport.in");
    ofstream g("transport.out");
long i;
f>>n>>k;
for(i=1;i<=n;i++)
{
    f>>v[i];
    ma=max(ma,v[i]);
    s+=v[i];
}
mi=s;
t=(ma+s)/2;
x=ma; y=s;
if(verif(ma)<=k)
    g<<ma;
else{
    while(x<=y)
    {
        if(verif(t)<=k)
        {
            mi=min(mi,t);
            y=(x+y)/2-1;
            t=(x+y)/2;

        }
        else
        {
            x=(x+y)/2+1;
            t=(x+y)/2;
        }
    }
     g<<mi;}

return 0;
}