Pagini recente » Cod sursa (job #870089) | Cod sursa (job #1179434) | Cod sursa (job #2460736) | Cod sursa (job #1820516) | Cod sursa (job #2118072)
#include<fstream>
#include<algorithm>
#define x first
#define y second
using namespace std;
ifstream fin("oo.in");
ofstream fout("oo.out");
int n,i,k,s,ok;
int v[100005],f[100001];
pair <int,int> p[100005];
int main(){
fin>>n;
for(i=1;i<=n;i++)
fin>>v[i];
for(i=1;i<n;i++){
p[++k].x=v[i]+v[i+1];
p[k].y=i;
}
p[++k].x=v[n]+v[1];
p[k].y=n;
sort(p+1,p+k+1);
for(i=k;i>=1;i--){
ok=0;
if(p[i].y+1==n+1){
if(f[1]==1)
ok=1;
}
else{
if(f[p[i].y+1]==1)
ok=1;
}
if(p[i].y+2==n+2){
if(f[2]==1)
ok=1;
}
else{
if(f[p[i].y+2]==1)
ok=1;
}
if(p[i].y-1==0){
if(f[n]==1)
ok=1;
}
else{
if(f[p[i].y-1]==1)
ok=1;
}
if(f[p[i].y]==0&&ok==0){
s+=p[i].x;
f[p[i].y]=1;
if(p[i].y+1==n+1)
f[1]=1;
else
f[p[i].y+1]=1;
if(p[i].y-1==0)
f[n]=1;
else
f[p[i].y-1]=1;
if(p[i].y+2==n+2)
f[2]=1;
else{
if(p[i].y+2==n+1)
f[1]=1;
else
f[p[i].y+2]=1;
}
}
}
fout<<s;
return 0;
}