Pagini recente » Cod sursa (job #1453888) | Cod sursa (job #1711507) | Cod sursa (job #631995) | Cod sursa (job #3165058) | Cod sursa (job #46521)
Cod sursa(job #46521)
#include<stdio.h>
long z[61],y[61],b,n,m,j,k,i,l,a,s,x[61];
int main()
{
freopen("oo.in","r",stdin);
freopen("oo.out","w",stdout);
scanf("%ld",&n);
for (i=1;i<=n;i++)
scanf("%ld",&x[i]);
for (i=1;i<=n;i++)
if (i+3<=n) y[i]=x[i]+x[i+3]; else y[i]=x[i]+x[i+3-n];
/* a=1;
s=0;
while (a)
{
k=100000;
for (i=1;i<=n;i++)
{
if (i+1>n) a=1; else a=i+1;
if (i+2>n) b=2; else b=i+2;
if (z[i]==0&&y[i]<k&&z[a]==0&&z[b]==0) {k=y[i];l=i;}
}
if (k!=100000)
{
if (l+1<=n) s+=x[l+1]; else s+=x[1];
if (l+1<=n) z[l+1]=1; else z[1]=1;
if (l+2<=n) s+=x[l+2]; else s+=x[2];
if (l+2<=n) z[l+2]=1; else z[2]=1;
//z[l]=1;
} else a=0;
// if (k==100) a=0;
}
*/
a=1;
while (a)
{
k=-1;
for (i=1;i<n;i++)
if (z[i]==0&&z[i+1]==0&&x[i]+x[i+1]>k) {k=x[i]+x[i+1];l=i;}
if (z[n]==0&&z[1]==0&&x[n]+x[1]>k) {k=x[n]+x[n+1];l=n;}
if (k!=-1)
{
if (l==n) {s+=x[l]; s+=x[1];z[n]=1;z[n-1]=1;z[1]=1;z[2]=1;} else
{
if (l==1) z[n]=1; else z[l-1]=1;
z[l]=1;
z[l+1]=1;
if (l+2<=n) z[l+2]=1; else z[2]=1;
s+=x[l]; s+=x[l+1];
}
}
else a=0;
}
printf("%ld\n",s);
return 0;
}