Cod sursa(job #2310650)
| Utilizator | Data | 1 ianuarie 2019 19:37:33 | |
|---|---|---|---|
| Problema | Transport | Scor | 40 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 0.53 kb |
#include <bits/stdc++.h>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
int N,K,S[16000];
int main()
{
f>>N>>K;
for(int i=0;i<N;f>>S[i++]);
int l=*max_element(S,S+N),r=256000000,m;
for(int q=0,k=0,s=0;l<r;q=0,k=0,s=0)
{
m=(l+r)>>1;
while(k<N)
{
if(s+S[k]<=m) s+=S[k];
else q++,s=S[k];
k++;
}
if(s>0) q++;
if(q<=K) r=m-1;
else l=m+1;
}
g<<m+1;
return 0;
}
