Pagini recente » Atasamentele paginii Clasament morning_training | Cod sursa (job #1548515) | Cod sursa (job #1453383) | Cod sursa (job #2376170) | Cod sursa (job #1453306)
#include <iostream>
#include <fstream>
#include <math.h>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int n, k, sum, minim;
int A[17000];
void Alg(int l, int h){
int m, sum = 0;
if(l >= h)
fout << minim;
else{
m = round((l+h)/2.0);
int res = 1;
int i = 0;
for(int i = 0; i<n; i++){
sum+=A[i];
if(A[i] > m)
l++;
else
if(sum > m){
res++;
if(sum - A[i] < minim && res == k)
minim = sum - A[i];
sum = A[i];
}
}
Alg(l, m-1);
}
}
int main(){
minim = 32000;
fin >> n >> k;
sum = 0;
for(int i = 0; i < n; i++ ){
fin >> A[i];
sum += A[i];
}
Alg(sum/k+1, sum);
return 0;
}