代码:
#include<bits/stdc++.h>
using namespace std;
int a[114],n,anm,anx,fc,phi,m1,m2,g[114];
struct su{
int st,ed,sm;
}u[114];
void sum(int c[]){
for(int i=1;i<=m1;i++){
if(i!=m1){
u[i].sm=c[i]+c[i+1];
u[i].st=i;
u[i].ed=i+1;
}
else{
u[i].sm=c[m1]+c[1];
u[i].st=m1;
u[i].ed=1;
}
}
}
void sum2(int c[]){
for(int i=1;i<=m2;i++){
if(i!=m2){
u[i].sm=c[i]+c[i+1];
u[i].st=i;
u[i].ed=i+1;
}
else{
u[i].sm=c[m2]+c[1];
u[i].st=m2;
u[i].ed=1;
}
}
}
void move(int c[],int rr,int q){
for(int i=rr;i<=q;i++)
a[i]=a[i+1];
}
int main(){
int sb=0,iga;
cin>>n;
m1=n,m2=n;
for(int i=1;i<=n;i++){
cin>>a[i];
g[i]=a[i];
}
sum(a);
while(m1>1){
phi=2114514810;
for(int i=1;i<=m1;i++)
if(phi>u[i].sm){
sb=u[i].ed;
iga=u[i].st;
phi=u[i].sm;
}
a[sb]+=a[iga];
anm+=a[sb];
move(a,iga,m1);
m1--;
sum(a);
}
sum(g);
while(m2>1){
phi=0;
for(int i=1;i<=m2;i++)
if(phi<u[i].sm){
sb=u[i].ed;
iga=u[i].st;
phi=a[iga]+a[sb];
}
g[sb]+=g[iga];
anx+=g[sb];
move(g,iga,m2);
m2--;
sum2(g);
}
cout<<anm<<endl<<anx;
}