Cod sursa(job #1198503)
| Utilizator | Data | 15 iunie 2014 21:30:47 | |
|---|---|---|---|
| Problema | Transport | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.51 kb |
#include <fstream>
#include <iostream>
using namespace std;
#define dim 16003
int a[dim],maxim=-1,n,k,s=0;
int solve(int l,int r){
if(l==r) return l;
int mid=(l+r)/2,i,j=1,nr=0;
while(j!=n+1){
i=a[j];
while(i<=mid && j<n+1) j++,i+=a[j];
nr++;
}
if(nr>k) return solve(mid+1,r);
else if(nr<=k) return solve(l,mid);
}
int main(){
ifstream f("transport.in");
ofstream g("transport.out");
f >> n >> k;
for(int i=1;i<=n;i++){
f >> a[i];
s+=a[i];
maxim=max(maxim,a[i]);
}
g << solve(maxim,s);
}
