Pagini recente » Cod sursa (job #1066521) | Cod sursa (job #1082889) | Cod sursa (job #1247805) | Cod sursa (job #2850178) | Cod sursa (job #977239)
Cod sursa(job #977239)
#include<cstdio>
#include <fstream>
using namespace std;
int minim, v[16005], p, u, s, mij, n, k, i;
FILE *fin=fopen("transport.in", "r");
ofstream fout("transport.out");
int trece(int g){
//testam daca cu capacitatea g pute realiza k transporturi
int t=1;
int cc=g;
for(int i=1; i<=n; i++){
if(cc>=v[i])
cc-=v[i];
else{
t++;
cc=g-v[i];
}
if(t>k)
break;
}
if(t<=k)
return 1;
else
return 0;
}
int main(){
minim=16002;
fscanf(fin,"%d%d",&n, &k);
for(i=1; i<=n; i++){
fscanf(fin, "%d", &v[i]);
if(v[i]<minim)
minim=v[i];
s+=v[i];
}
p=minim; u=s;
while(p<=u){
mij=p+(u-p)/2;
if(trece(mij)){
u=mij-1;
}
else{
p=mij+1;
}
}
fout<<p;
return 0;
}