Cod sursa(job #1505953)
| Utilizator | Data | 19 octombrie 2015 21:34:02 | |
|---|---|---|---|
| Problema | Transport | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.68 kb |
#include <iostream>
#include <fstream>
using namespace std;
int main(){
ifstream fin("transport.in");
ofstream fout("transport.out");
int N,K,v[16100],i,vmax=0,s=0,dr,st,mij,sum,k2,ver,sol;
fin>>N>>K;
for(i=N;i>=1;i--){
fin>>v[i];
s+=v[i];
if(v[i]>vmax)
vmax=v[i];
}
dr=s;
st=vmax;
while(st<=dr){
k2=0;
sum=0;
mij=(st+dr)/2;
for(i=N;i>=1;i--){
sum+=v[i];
ver=0;
if(sum>mij){
sum=0;
i++;
k2++;
ver=1;
}
}
if(ver==0)
k2++;
if(k2<=K){
sol=mij;
dr=mij-1;
}
else
st=mij+1;
}
fout<<sol;
return 0;
}
