Pagini recente » Cod sursa (job #1404669) | Cod sursa (job #303135) | Cod sursa (job #400612) | Cod sursa (job #1866081) | Cod sursa (job #1022623)
#include <iostream>
#include <fstream>
using namespace std;
int k,n,a[17000],minim=1<<19;
int suma=0;
int cauta(int st, int dr){
int mij=(st+dr)/2;
int maxim=mij;
int contor=1;
for(int i=0;i<n;i++){
//cout<<maxim<<'-'<<a[i]<<'\n';
if(maxim-a[i]>=0)
maxim=maxim-a[i];
else if(maxim-a[i]<0){
maxim=mij;
contor++;
maxim=maxim-a[i];
}
}
if(contor<=k && st<mij){
cauta(st,mij);
//cout<<mij;
if(mij<minim)
minim=mij;
}
//cout<<"dre"<<dr<<" ";
/*else if(contor>k ){
cauta(mij,suma);
}*/
//cout<<st<<" "<<dr<<" "<<contor;
}
int main()
{
int i;
ifstream f("transport.in");
ofstream g("transport.out");
f>>n>>k;
int maxim=-1;
for(i=0;i<n;i++){
f>>a[i];
suma=suma+a[i];
if(a[i]>maxim)
maxim=a[i];
}
cauta(maxim, suma);
g<<minim;
return 0;
}