Pagini recente » Cod sursa (job #320549) | Cod sursa (job #1469532) | Cod sursa (job #3265080) | Cod sursa (job #1074688) | Cod sursa (job #2064387)
#include <fstream>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
int n,k,m,i,j,sum,c,max1,min1,ok,maxx,l;
int s[16002],x[16002],pi[16002],pj[16002],s1[16002],pi1[16002],pj1[16002];
int main()
{
f>>n>>k; max1=0; maxx=0;
if(n%k==0){
m=0; i=1;
while(i<=n){
j=i; sum=0;
while(j<=n/k+i-1){
f>>x[j]; //maxx=max(maxx,x[j]);
sum+=x[j]; j++;
}
s[++m]=sum;
max1=max(max1,s[m]);
pi[m]=i; pj[m]=j-1;
i=j;
}
} else{
c=n/k; c*=k;
i=1;
while(i<=c){
j=i; sum=0;
while(j<=n/k+i-1){
f>>x[j];sum+=x[j];
maxx=max(maxx,x[j]);j++;
}
s[++m]=sum;
max1=max(max1,s[m]);
pi[m]=i; pj[m]=j-1;
i=j;
}
for(i=c+1;i<=n;i++){
f>>x[i]; s[m]+=x[i];
pj[m]=i; maxx=max(maxx,x[i]);
}
max1=max(max1,s[m]);
}
for(i=1;i<=m;i++){
if(s[i]==max1){
for(j=1;j<=m;j++){
s1[j]=s[j]; pi1[j]=pi[j]; pj1[j]=pj[j];
}
min1=max1;
//DREAPTA
if(i>1){
ok=1; j=i;
while(ok==1&&j>1){
while(s1[j]>s1[j-1]&&pi1[j]!=pj1[j]){
s1[j]-=x[pi1[j]]; s1[j-1]+=x[pi1[j]];
pj1[j-1]=pi1[j]; pi1[j]++;
if(s1[j]>s1[j-1]){ maxx=0;
for(l=1;l<=m;l++) maxx=max(maxx,s1[l]);
min1=min(min1,maxx);
}
}
if(s1[j]>s1[j-1]){ ok=0;maxx=0;
for(l=1;l<=m;l++) maxx=max(maxx,s1[l]);
min1=min(min1,maxx); }
else {maxx=0;
for(l=1;l<=m;l++) maxx=max(maxx,s1[l]);
min1=min(min1,maxx);}
j--;
}
}
//STANGA
if(i<m){
ok=1; j=i;
s1[i]=s[i];
pi1[i]=pi[i]; pj1[i]=pj[i];
while(ok==1&&j<m){
while(s1[j]>s1[j+1]&&pi1[j]!=pj1[j]){
s1[j]-=x[pj1[j]]; s1[j+1]+=x[pj1[j]];
pj1[j]--; pi1[j+1]=pj1[j];
if(s1[j]>s1[j+1]){ maxx=0;
for(l=1;l<=m;l++) maxx=max(maxx,s1[l]);
min1=min(min1,maxx);}
}
if(s1[j]>s1[j+1]){ ok=0; maxx=0;
for(l=1;l<=m;l++) maxx=max(maxx,s1[l]);
min1=min(min1,maxx); }
else { maxx=0;
for(l=1;l<=m;l++) maxx=max(maxx,s1[l]);
min1=min(min1,maxx); }
j++;
}
}
}
}
g<<min1<<'\n';
return 0;
}