Cod sursa(job #804884)
| Utilizator | Data | 30 octombrie 2012 16:42:27 | |
|---|---|---|---|
| Problema | Transport | Scor | 40 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.64 kb |
#include <iostream>
#include <fstream>
using namespace std;
int N, K;
int V[16010];
bool is_possible (int C) {
int nr=1, cap=0;
for(int i=1; i<=N; i++){
if(V[i]>C)
return 0;
if(cap+V[i]<=C)
cap+=V[i];
else{
nr++;
cap=V[i];
}
}
if(nr<=K)
return 1;
return 0;
}
int main () {
ifstream fin ("transport.in");
ofstream fout ("transport.out");
fin>>N>>K;
for(int i=1; i<=N ; i++)
fin>>V[i];
for(int j=1; ; j++){
if(is_possible (j)==1){
fout<<j;
break;
}
}
return 0;
}
