Pagini recente » Istoria paginii utilizator/jhcourt91gh | Cod sursa (job #672492) | Cod sursa (job #1768846) | Cod sursa (job #613464) | Cod sursa (job #672493)
Cod sursa(job #672493)
#include<iostream>
#include<fstream>
using namespace std;
ifstream f("gaini.in");
ofstream g("gaini.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;}