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