Pagini recente » Cod sursa (job #574676) | Cod sursa (job #2681679) | Cod sursa (job #179916) | Cod sursa (job #1617656) | Cod sursa (job #1034761)
#include<fstream>
using namespace std;
int main()
{
ifstream f("transport.in");
ofstream g("transport.out");
int i,n,k,nr,s,d,c,sum,r;
f>>n>>k;
int v[n+1];
f>>v[1];
s=d=v[1];
for(i=1;i<=n;d+=v[i],++i)
{
f>>v[i];
if(v[i]>s)s=v[i];
}
r=c=(s+d)>>1;
while(true)
{
for(sum=v[1],i=2,nr=1;i<=n && nr<=k;++i)
if(sum+v[i]<=c)sum+=v[i];
else
{
++nr;
sum=v[i];
}
g<<s<<", "<<d<<" => "<<c<<" : "<<nr<<" "<<r<<"\n";
if(r>c && nr<=k)r=c;
if(nr<=k) c=(s+(d=c))>>1;
else c=((s=c)+d)>>1;
if(c==s || c==d)break ;
}
g<<r<<"\n";
f.close();
g.close();
return 0;
}