提交时间:2023-12-17 13:48:03

运行 ID: 222879

#include <bits/stdc++.h> using namespace std; int n; int a[100002]; int vis[100002],maxx,ans,len; int main() { scanf("%d",&n); for(int i=1; i<=n; i++) { scanf("%d",&a[i]); if(a[i]>maxx) { maxx=a[i]; vis[0]=i; len=0; } else if(a[i]==maxx) vis[++len]=i; } if(len==0) { int u=vis[0],c; if(a[vis[0]-1]>=a[vis[0]+1]) { ans=a[vis[0]-1]*maxx; c=u-1; } else { ans=a[vis[0]+1]*maxx; c=u+1; } for(int i=1; i<=n; i++) { if(i!=u&&i!=c) { ans+=a[i]; } } } else { int maxx1=0,m; for(int i=0; i<=len; i++) { int b=vis[i]-1; int c=vis[i]+1; if(a[b]>maxx1) { maxx1=a[b]; m=b; } else if(a[c]>maxx1) { maxx1=a[c]; m=c; } } ans=maxx1*maxx; for(int i=1; i<=n; i++) { if(i!=m&&i!=vis[i]) { ans+=a[i]; } } } printf("%d\n",ans); return 0; }