Cod sursa(job #3261618)
| Utilizator | Data | 6 decembrie 2024 23:22:51 | |
|---|---|---|---|
| Problema | Transport | Scor | 80 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 0.74 kb |
#include<fstream>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
int N,C,K,v[16001],i,vmax,suma,transp,l1,l2,s;
int main()
{
f>>N>>K;
for(i=1;i<=N;i++)
f>>v[i];
for(i=1;i<=N;i++)
{
suma=suma+v[i];
if(v[i]>vmax)
vmax=v[i];
}
l1=vmax;l2=suma;
while(l1<=l2)
{
C=(l1+l2)/2;
transp=1;s=0;
for(i=1;i<=N;i++)
{
if(s+v[i]<=C)
s=s+v[i];
else
{transp++;
s=v[i];
}
}
if(transp<=K)
l2=C-1;
else
l1=C+1;
}
g<<C;
f.close();
g.close();
return 0;
}
