Pagini recente » Cod sursa (job #3278307) | Cod sursa (job #1096699) | Cod sursa (job #1404390) | Cod sursa (job #1600587) | Cod sursa (job #2421903)
#include <bits/stdc++.h>
using namespace std;
const int nmax=100005;
pair <int, int> v[nmax];
bool visited[nmax];
bool cmp(pair <int, int> a, pair <int, int> b){return a.first>b.first;}
int main()
{
freopen("oo.in", "r", stdin);
freopen("oo.out", "w", stdout);
int n;
scanf("%d", &n);
int nrmax=n/3;
for(int i=1;i<=n;i++)
{
int nr;
scanf("%d", &nr);
v[i].first=nr;
v[i].second=i;
}
int in=v[1].first;
for(int i=1;i<n;i++)
v[i].first+=v[i+1].first;
v[n].first+=in;
sort(v+1, v+n+1, cmp);
int rasp=0;
for(int i=1;i<=n&&nrmax;i++)
{
if(visited[v[i].second]==false&&visited[v[i].second+1]==false)
{
if(v[i].second==n)
if(visited[1]==true)
continue;
nrmax--;
rasp+=v[i].first;
visited[v[i].second]=true;
visited[v[i].second+1]=true;
if(v[i].second+1>n)
visited[(v[i].second+1)%n]=true;
visited[v[i].second+2]=true;
if(v[i].second+2>n)
visited[(v[i].second+2)%n]=true;
visited[v[i].second-1]=true;
if(v[i].second-1==0)
visited[n]=true;
}
}
printf("%d\n", rasp);
return 0;
}