Mai intai trebuie sa te autentifici.
Cod sursa(job #3357325)
| Utilizator | Data | 8 iunie 2026 20:29:32 | |
|---|---|---|---|
| Problema | Transport | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 0.95 kb |
#include <fstream>
using namespace std;
ifstream cin("transport.in");
ofstream cout("transport.out");
int v[16005];
int main()
{
int n, k, c, S = 0, cnt = 1;
long long Sum = 0, maxi = -10000;
cin >> n >> k;
for(int i = 1; i <= n; i++)
cin >> v[i];
for(int i = 1; i <= n; i++)
if(v[i] > maxi)
maxi = v[i];
for(int i = 1; i <= n; i++)
Sum += v[i];
long long st = maxi, dr = Sum, mij;
while(st <= dr)
{
mij = (st+ dr) / 2;
S = 0;
cnt = 1;
for(int i = 1; i <= n; i++)
{
if(S + v[i] <= mij)
S += v[i];
else
{
cnt++;
S = v[i];
}
}
if(cnt <= k)
{
c = mij;
dr = mij - 1;
}
else
st = mij + 1;
}
cout << c;
return 0;
}
