Pagini recente » Cod sursa (job #3138985) | Cod sursa (job #1865302) | Cod sursa (job #1878953) | Cod sursa (job #339533) | Cod sursa (job #864223)
Cod sursa(job #864223)
#include<fstream>
using namespace std;
int s,n,k,S,p,u,nr_transporturi,v[16001],i,maxim,m,nr;
ifstream fin("transport.in");
ofstream fout("transport.out");
int main(){
fin>>n>>k;
for(i=1;i<=n;i++){
fin>>v[i];
if(v[i]>maxim){
maxim=v[i];
}
s=s+v[i];
}
p=maxim;
u=s;
while(p<=u){
m=(p+u)/2;
S=0;
nr_transporturi=1;
for(i=1;i<=n;i++){
if(S+v[i]<=m){
S=S+v[i];
}
else{
S=v[i]; //salteaua care nu a incaput in transportul precedent
nr_transporturi++;
}
}
if(nr_transporturi<=k){
u=m-1;;
}
else
p=m+1;
if(nr_transporturi==k){
nr=m;
}
}
if(nr_transporturi!=k)
nr=0;
fout<<nr;
return 0;
}