Cod sursa(job #677871)

Utilizator ioalexno1Alexandru Bunget ioalexno1 Data 10 februarie 2012 19:16:33
Problema Transport Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <cstdio>
using namespace std;
const int nmax=16005;
int sol,a[nmax],sum,n,k;
void read()
{ int i;
freopen("transport.in","r",stdin); scanf("%d %d\n",&n,&k);
for(i=1;i<=n;++i)
    { scanf("%d\n",&a[i]); sum+=a[i]; }
fclose(stdin);
}
void binary_search()
{ int st,dr,mij,nr,s,i;
st=0; dr=sum;
while(st<=dr)
    {
    mij=(st+dr)/2;
    nr=0; s=0;
    for(i=1;i<=n;++i)
        {
        s+=a[i];
        if(s>mij){ ++nr; s=a[i]; }
        }
    ++nr;
    if(nr<=k){
             sol=mij;
             dr=mij-1;
              }
    else st=mij+1;
    }
}
int main()
{
sum=0;
read();
sol=0;
binary_search();
freopen("transport.out","w",stdout); printf("%d",sol); fclose(stdout);
return 0;
}