Cod sursa(job #2976843)
| Utilizator | Data | 10 februarie 2023 10:44:46 | |
|---|---|---|---|
| Problema | Transport | Scor | 10 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 0.68 kb |
#include <iostream>
#include <fstream>
using namespace std;
ifstream f ("transport.in");
ofstream g ("transport.out");
int n, k, i, m, s, v[16001], x, aux, j, st,dr;
int
main ()
{
f >> n >> k;
for (i = 1; i <= n; i++)
{
f >> v[i];
dr=dr+v[i];
if (v[i] > m)
m = v[i];
}
aux = 1;
st=1;
while (st<dr)
{ m=(st+dr)/2;s=0;
for (i = 1; i <= n; i++)
{
if(s+v[i]<=m)
{
s = s + v[i];
}
else
{
s=v[i];
aux++;
}
}
if(aux>k)
st=st+1;
else
dr=dr-1;
if(aux==k)
break;
aux=0;
}
g<<m+1;
return 0;
}
