Cod sursa(job #672507)

Utilizator lungu9Lungu Cosmin lungu9 Data 2 februarie 2012 12:43:52
Problema Oo Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.25 kb
#include<iostream>
#include<fstream>
using namespace std;
ifstream f("oo.in");
ofstream g("oo.out");
int maxim(int  a[200005],int n, int i)
{
int max=0,poz=0;
for(i=1;i<=n;i++)
	if(a[i]>max)
		{max=a[i];
		poz=i;}
return poz;
}


int gaini[100002],sume[200005],poz[500000];
int main()
{int i,n,nrper,poz,pozs,x,y=0;
long long s=0;
f>>n;
for(i=1;i<=n;i++)
	f>>gaini[i];
gaini[n+1]=gaini[1];
nrper=n/3;
for(i=1;i<=n;i++)
	sume[i]=gaini[i]+gaini[i+1];
for(i=n+1;i<=2*n;i++)
	sume[i]=sume[i-n];


while(nrper)
{poz=maxim(sume,n,1);
pozs=sume[poz];
if(poz==1)
	{for(i=poz+3;i<=n;i++)
		sume[i-3]=sume[i];
	for(i=n-2;i<=n;i++)
		sume[i]=-1;}
else if(poz==2)
	{for(i=poz+3;i<=n;i++)
		sume[i-4]=sume[i];
	 for(i=n-3;i<=n;i++)
		sume[i]=-1;}
else if(poz>2 && poz<n-2)
{for(i=poz+3;i<=n;i++)
		sume[poz-2+i-poz-3]=sume[i];
for(i=poz-2;i<=poz+2;i++)
		sume[i]=-1;}
else if(poz==n)
{for(i=n-2;i<=n;i++)
		sume[i]=-1;
}
else if(poz==n-1)
{
for(i=n-3;i<=n;i++)
		sume[i]=-1;
}
else if(poz==n-2)
{
x=5;
y=y+x;
}
for(i=n-y+1;i<=n;i++)
		sume[i]=-1;
s=s+pozs;
nrper--;
if(maxim(sume,n,1))
{
for(i=1;i<=n;i++)
	sume[i+n]=sume[i];
}
else if(nrper!=0)
{
for(i=1;i<=n;i++)
	sume[i]=sume[n+i];
s=s-pozs;
}
}
g<<s;
return 0;}