Cod sursa(job #1483425)
| Utilizator | Data | 9 septembrie 2015 11:40:24 | |
|---|---|---|---|
| Problema | Transport | Scor | 40 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.72 kb |
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int k,n,dg[16001],s=0,maxdg=0,i,st,dr,m,x,capa;
int main()
{
fin>>n>>k;
for(i=1;i<=n;i++)
{
fin>>dg[i];
s=dg[i]+s;
if(maxdg<dg[i])
maxdg=dg[i];
}
st=maxdg;
dr=s+1;
while(st<=dr)
{
m=(st+dr)/2;
x=0;
for(i=1;i<=n;)
{
x++;
s=0;
while(s+dg[i]<=m)
s=s+dg[i++];
}
if(x<=k)
{
capa=m;
dr=m-1;
}
else
{
st++;
}
}
fout<<capa;
return 0;
}
