Cod sursa(job #2563012)
Utilizator | Hantig Lorena LorenaMaria | Data | 29 februarie 2020 21:26:47 |
---|---|---|---|
Problema | Transport | Scor | 100 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 0.54 kb |
#include <fstream>
using namespace std;
ifstream in("transport.in");
ofstream out("transport.out");
int n,k,s[16001],st,dr;
bool ok(int x)
{ int g=0,t=0;
for(int i=1;i<=n;i++)
if(g+s[i]>x)
t++,g=s[i];
else
g+=s[i];
if(g>0)
t++;
return t<=k;
}
int main()
{ in>>n>>k;
for(int i=1;i<=n;i++)
in>>s[i],st=max(st,s[i]),dr+=s[i];
while(st<=dr)
{ int mij=(st+dr)/2;
if(ok(mij))
dr=mij-1;
else
st=mij+1;
}
out<<st<<'\n';
in.close();
out.close();
return 0;
}