Pagini recente » Cod sursa (job #1625731) | Cod sursa (job #111456) | Cod sursa (job #697879) | Cod sursa (job #761385) | Cod sursa (job #2622948)
#include <iostream>
using namespace std;
FILE * fin;
int computeTransports( int * v, int N, int C ){
int load = 0;
int transports = 0;
for ( int i = 0; i < N; i++ ){
load+=v[i];
if ( load == C ){
load = 0;
transports++;
} else if ( load > C ){
load = v[i];
transports++;
}
}
if ( load > 0 ){
transports++;
}
return transports;
}
FILE * fout;
int main(){
int N, K;
int v[16002];
fin = fopen("transport.in","r");
fscanf(fin,"%d%d",&N,&K);
int max = 0;
for ( int i = 0; i < N; i++ ){
fscanf(fin,"%d",v+i);
max += v[i];
}
int C = 0;
for ( int i = 1; i <= max; i++ ){
int res = computeTransports(v,N,i);
//cout << res << " " << i << endl;
if ( res <= K ){
C = i;
break;
}
}
/*
cout << endl;
int C = max/2;
int min = 0;
int last = -1;
while( true ){
int res = computeTransports(v,N,C);
//cout << res << " " << C << endl;
if ( res < K ){
C = (C+min)/2;
min = C;
} else if ( res > K ){
C = (C+max)/2;
max = C;
}
if ( last == C ){
break;
}
last = C;
}
*/
//cout << "res " << C << endl;
fout = fopen("transport.out","w");
fprintf(fout,"%d",C);
fclose(fout);
fclose(fin);
return 0;
}