Mai intai trebuie sa te autentifici.
Cod sursa(job #3333167)
| Utilizator | Data | 11 ianuarie 2026 16:53:51 | |
|---|---|---|---|
| Problema | Transport | Scor | 0 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 0.67 kb |
#include <bits/stdc++.h>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int n,k,i;
vector<int> v(16001);
int transport(int capacitate){
int nr=n;
int t=v[0];
for(i=1;i<n;i++){
t+=v[i];
if(t>capacitate) t=0;
else nr--;
}
return nr;
}
int main()
{
fin>>n>>k;
int s=0, mn=0;
for(i=0;i<n;i++) {
fin>>v[i];
s+=v[i];
if(v[i]<mn) mn=v[i];
}
int l=mn;
int r=s;
int mij;
vector<int> w(l+r+1);
for(i=l;i<=r;i++) w[i]=i;
do{
mij=(l+r)/2;
if(transport(w[mij])>k){
l=mij;
}
else r=mij;
}while(l<=r);
fout<<v[mij];
return 0;
}
