Cod sursa(job #2986168)
| Utilizator | Data | 27 februarie 2023 20:46:28 | |
|---|---|---|---|
| Problema | Transport | Scor | 10 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 1.01 kb |
#include <fstream>
using namespace std;
ifstream in("transport.in");
ofstream out("transport.out");
int v[16001];
int main()
{
int n, k, i, searc, st, dr, cap, mid, nrtrans, alltrans;
in>>n>>k;
for(i=1; i<=n; ++i)
{
in>>v[i];
}
st=1;
dr=16;
while(st<=dr)
{
mid=(st+dr)/2;
cap=mid;
nrtrans=1;
alltrans=0;
for(i=1; i<=n; i++)
{
if(mid<v[i])
{
st=mid+1;
i=n+1;
alltrans=1;
}
else
{
if(cap-v[i]>=0)
cap-=v[i];
else
{
cap=mid-v[i];
nrtrans++;
}
}
}
if(nrtrans>k||alltrans==1)
{
st=mid+1;
}
else
{
dr=mid-1;
searc=mid;
}
}
out<<searc;
return 0;
}
