Cod sursa(job #1203709)
| Utilizator | Data | 1 iulie 2014 09:54:12 | |
|---|---|---|---|
| Problema | Transport | Scor | 50 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.49 kb |
#include<fstream>
using namespace std;
ifstream f("transport.in");
ofstream o("transport.out");
int a[20000],n,k;
int binary(int l,int r){
if(l>r)return l;
int m=(l+r)/2;
int nr=0,v=0;
for(int i=1;i<=n;i++)
if(a[i]>m){
nr=k+1;
break;
}else
if(v+a[i]>m){
nr++;
v=a[i];
}else{
v+=a[i];
}
nr++;
if(nr<=k)return binary(l,m-1);
else return binary(m+1,r);
}
int main(){
f>>n>>k;
for(int i=1;i<=n;i++)f>>a[i];
o<<binary(1,16000);
}
