Cod sursa(job #815293)

Utilizator adrianav500Adriana Voinescu adrianav500 Data 16 noiembrie 2012 20:14:48
Problema Transport Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.55 kb
#include<fstream>
#define MAX 16000
using namespace std;
int n,k,sumtotal,volum[MAX];
int main(){
ifstream f("transport.in");
ofstream g("transport.out");
f>>n>>k;
for(int i=1;i<=n;i++){
f>>volum[i];
sumtotal+=volum[i];
}
int start=1;
while(start<=sumtotal){
int mijloc=(start+sumtotal)/2;
if(posibil(mijloc))
sumtotal=mijloc-1;
else start=mijloc+1;
}
g<<start<<"\n";
}
bool posibil(int poz){
int i=-1,s=0,nr=0;
while(nr<=k&&i+1<n){
s=0;
while(s+volum[i+1]<=poz&&i+1<n){
i++;
s+=volum[i];
}
nr++;
}
if(nr<=k)
return 1;
return 0;
}