Cod sursa(job #1148123)
Utilizator | Data | 20 martie 2014 14:37:06 | |
---|---|---|---|
Problema | Transport | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.85 kb |
#include <fstream>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
int n,k;
int a[16001];
int main()
{
int i,max=-1,s=0,cod=0,pas,nr,st,j;
f>>n>>k;
for(i=1;i<=n;i++){
f>>a[i];
if(a[i]>max)
max=a[i];
s += a[i];
}
i=0;
pas=max;
while(pas/2>0){
i++;
pas/=2;
}
pas=1<<i;
i=0;
while( pas!=0){
if(i+pas<=s){
nr=1;
st=0;
for(j=1;j<=n;j++){
if(st+a[j]<=i+pas)
st +=a[j];
else{
st=a[j];
nr++;
}
}
if(nr>k)
cod=i+pas;
i +=pas;
}
pas/=2;
}
g<<cod+1<<"\n";
return 0;
}