提交时间:2024-09-15 13:50:46
运行 ID: 32580
#include<bits/stdc++.h> using namespace std; long long n,a[10005],nmin=0x3f3f3f3f3f3f3f; bool ji[10000005]; inline void f(long long a[]){ long long sum=0; for(int i=1;i<=n;i++){ sum=sum*10+a[i]; } ji[sum]=true; } inline long long z(long long a[]){ long long sum=0; for(int i=1;i<=n;i++){ sum=sum*10+a[i]; } return sum; } inline long long up(long long a[]){ long long sum=0; for(int i=1;i<=n;i++){ sum+=a[i]; } return sum; } inline long long check(long long a[]){ long long sum=0,t=up(a); for(int i=1;i<=n;i++){ sum+=a[i]*a[i]*n*n+t*t-(2*t*a[i]*n); } return sum/n; } void dfs(long long a[]){ if(ji[z(a)]==true)return; f(a); nmin=min(nmin,check(a)); for(int i=2;i<n;i++){ if(a[i]!=a[i-1]+a[i+1]-a[i]){ long long t=a[i]; a[i]=a[i+1]+a[i-1]-a[i]; dfs(a); a[i]=t; } } } int main(){ for(int i=0;i<=10000000;i++)ji[i]=true; scanf("%lld",&n); for(int i=1;i<=n;i++){ scanf("%lld",&a[i]); } dfs(a); printf("%lld",nmin); }