提交时间:2022-07-20 12:25:12

运行 ID: 52963

#include <bits/stdc++.h> using namespace std; double n,a,b,ans; int x[1010],cnt[21]= {0,1},m; bool Check() { if(b==0 || a==0) return 1; bool flag=1; for(int i=1; i<=m; i++) if(x[i]!=i) { flag=0; break; } if(flag) return 1; } int main() { scanf("%lf%lf%lf",&n,&a,&b); m=(int)n; for(int i=2; i<=n; i++) cnt[i]=cnt[i-1]*i; for(int i=1; i<=m; i++) scanf("%d",&x[i]); if(n*a<b) printf("%.12lf\n",n*a); if(cnt[m]*b<a*n/2) printf("%.12lf\n",cnt[m]*b); else { if(Check()) puts("0"); else printf("%.12lf\n",min((double)((n*(n-1)*1.0+n/2.0)*a/2.0),(double)((1.0+cnt[m])*b/2.0))); } return 0; } //a期望:n/2-n*(n-1) //b期望:1-n!