Cod sursa(job #1350129)
| Utilizator | Data | 20 februarie 2015 17:55:55 | |
|---|---|---|---|
| Problema | Transport | Scor | 0 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.66 kb |
#include <fstream>
using namespace std;
ifstream in ("transport.in");
ofstream out ("transport.out");
int main()
{
int n,i,v[16000],s=0,k,max=0,in,sf,r,m,p,mij=0;
in>>n>>k;
for (i=1;i<=n;i++)
{in>>v[i];
s=s+v[i];
if(v[i]>max) max=v[i];
}
in=max;
sf=s;
while(in<=sf)
{
mij=(in+sf)/2;
m=0;
p=1;
for(i=1;i<=n;i++)
{
m=m+v[i];
if(m>mij)
{
m=v[i];
p++;
}
}
if(p<=k)
{sf=mij-1;
r=mij;}
else
{in=mij+1;
r=mij+1;}
}
out<<r;
return 0;
}
