Nu aveti permisiuni pentru a descarca fisierul grader_test6.in
Cod sursa(job #1034764)
Utilizator | Data | 18 noiembrie 2013 02:31:15 | |
---|---|---|---|
Problema | Transport | Scor | 80 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.72 kb |
#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=2;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];
}
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;
}