Cod sursa(job #3261620)
| Utilizator | Data | 6 decembrie 2024 23:36:26 | |
|---|---|---|---|
| Problema | Transport | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 0.77 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,sol;
int main()
{
f>>N>>K;
for(i=1;i<=N;i++)
{f>>v[i];
suma=suma+v[i];
if(v[i]>vmax)
vmax=v[i];
}
l1=vmax;l2=suma;sol=l2;
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;
sol=C;
}
else
l1=C+1;
}
g<<sol;
f.close();
g.close();
return 0;
}
