Cod sursa(job #1098811)
Utilizator | Data | 5 februarie 2014 11:16:28 | |
---|---|---|---|
Problema | Transport | Scor | 80 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.66 kb |
#include<fstream>
using namespace std;
int n, k, st, dr, mid, t, i, s;
int v[16001];
ifstream fin("transport.in");
ofstream fout("transport.out");
int main(){
fin>> n >> k;
dr = 0;
for(i = 1; i <= n; i++){
fin>> v[i];
dr+= v[i];
}
st = 1;
while(st <= dr){
mid = (st + dr) / 2;
s = 0;
t = 1;
for(i = 1; i <= n; i++){
s = s + v[i];
if(s > mid){
t++;
s = v[i];
}
}
if(t > k){
st = mid + 1;
}
else{
dr = mid - 1;
}
}
fout<< st;
}