Mai intai trebuie sa te autentifici.

Cod sursa(job #419192)

Utilizator SadmannCornigeanu Calin Sadmann Data 17 martie 2010 09:18:48
Problema Oo Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.44 kb
#include<stdio.h>
#include<math.h>
FILE *in,*out;
int n,m[100000],s[100000],max[100000],aux,c=1,sum,ok=2,contor,i;
int main ()
{
 in=fopen("oo.in","rt");
 out=fopen("oo.out","wt");
 fscanf(in,"%d",&n);
 contor=n;
 for(i=1;i<=n;i++)
  fscanf(in,"%d",&m[i]);
 s[1]=m[1]+m[n];
 max[1]=s[1];

 for(i=1;i<n;i++)
  {
   s[i+1]=m[i]+m[i+1];
   max[i+1]=s[i+1];
  }
 for(i=1;i<n;i++)
  for(int j=i;j<=n;j++)
   {
    if(max[i]<max[j])
     {
      aux=max[i];
      max[i]=max[j];
      max[j]=aux;
     }
   }
 while(c<=n)
  {
   for(i=1;i<=n;i++)
    {
     if(s[i]==max[c])
      {
       if(m[i-1]!=-1 && m[i]!=-1)
	{
	 sum+=s[i];
	 s[i]=-1;
	 if(i==n)
	  {
	   m[1]=m[i-2]=m[i-1]=m[i]=-1;
	   s[i-1]=s[1]=-1;
	  }
	 if(i==1)
	  {
	   m[1]=m[n]=m[2]=m[n-1]=-1;
	   s[n]=s[2]=-1;
	  }
	 if(i==2)
	  {
	   m[1]=m[2]=m[3]=m[n]=-1;
	   s[1]=s[3]=-1;
	  }
	 else
	  {
	   m[i+1]=m[i]=m[i-1]=m[i-2]=-1;
	   s[i+1]=s[i-1]=-1;
	  }
	}
       else
	{
	 if(m[i+1]!=-1 && m[i]!=-1)
	 {
	  sum+=s[i];
	  s[i]=-1;
	  if(i==n)
	   {
	    m[1]=m[i-2]=m[i-1]=m[i]=-1;
	    s[i-1]=s[1]=-1;
	   }
	  if(i==1)
	   {
	    m[1]=m[n]=m[2]=m[n-1]=-1;
	    s[n]=s[2]=-1;
	   }
	  if(i==2)
	   {
	    m[1]=m[2]=m[3]=m[n]=-1;
	    s[1]=s[3]=-1;
	   }
	  else
	   {
	    m[i+1]=m[i]=m[i-1]=m[i-2]=-1;
	    s[i+1]=s[i-1]=-1;
	   }
	 }
        }
      }
    }
   c++;

  }
 fprintf(out,"%d",sum);

	 return 0;
}