Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
52963 | lgh | 敏捷排列 | C++ | 解答错误 | 0 | 0 MS | 248 KB | 705 | 2022-07-20 12:25:12 |
#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!