Pagini recente » Cod sursa (job #3038640) | Cod sursa (job #826056) | Cod sursa (job #2018019) | Cod sursa (job #2023703) | Cod sursa (job #1009146)
#include<fstream>
using namespace std;
int v[16002];
int verificare(int nr, int k,int n){
int i=1,s=0,pok=0;
for(i=1;i<=n;i++){
if(v[i]>nr)return 0;
if(s+v[i]>nr){
s=v[i];
pok++;
}
else s+=v[i];
}
if(pok+1>k) return 0;
else return 1;
}
int main(){
ifstream in("transport.in");
ofstream out("transport.out");
int i,s=0,p=0,k,n,mx=0,rasp=0;
in>>n>>k;
for(i=1;i<=n;i++){
in>>v[i];
}
int stanga=1, dreapta=2000000000, loc;
while(dreapta-stanga>=0){
if(verificare((stanga+dreapta)/2, k, n)==0){
stanga=(stanga+dreapta)/2+1;
}
else dreapta=(stanga+dreapta)/2-1;
}
out<<dreapta+1;
in.close();
out.close();
return 0;
}