Pagini recente » Cod sursa (job #2175410) | Cod sursa (job #2091308) | Cod sursa (job #1741080) | Cod sursa (job #400463) | Cod sursa (job #1022600)
#include <iostream>
#include <fstream>
using namespace std;
int k,n,a[17000],minim=1<<19;
int cauta(int st, int dr){
int mij=(st+dr)/2;
int maxim=mij;
int contor=0;
for(int i=0;i<n;i++){
if(maxim-a[i]>=0)
maxim=maxim-a[i];
if(maxim-a[i]<0){
maxim=mij;
contor++;
}
}
if(contor<=k && st<mij){
cauta(st,mij);
if(mij<minim)
minim=mij;
}
if(contor>k && dr>mij){
cauta(mij,dr);
}
}
int main()
{
int i;
ifstream f("transport.in");
ofstream g("transport.out");
f>>n>>k;
int suma=0;
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;
}