Cod sursa(job #1287528)

Utilizator Johnny07Savu Ioan-Daniel Johnny07 Data 7 decembrie 2014 19:33:04
Problema Transport Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");

int a[16010],ma,n,k,ls,ld,mid,s,p;

int check ()
{
    int i;
    int nrt=0,sump=0;
for (i=1;i<=n;i++)
{
    if (sump+a[i]>mid) {nrt++;sump=a[i];}
    else sump+=a[i];
}
nrt++;
return nrt;

}



void bsearch()
{
ls=ma;
ld=s;
while (ls<ld)
{
    mid=(ls+ld)/2;
    p=check();
    if (p<=k) ld=mid-1;
    else ls=mid+1;
}
mid=(ls+ld)/2;
p=check();
if (p<k) mid++;
g<<mid;

}


int main()
{
    int i;
f>>n>>k;
for (i=1;i<=n;i++)
{
    f>>a[i];
    s+=a[i];
    ma=max(ma,a[i]);
}
    bsearch();


    return 0;
}