Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
52712 | AK2022071346 | 敏捷排列 | C++ | 解答错误 | 40 | 0 MS | 248 KB | 556 | 2022-07-20 11:50:59 |
#include<cstdio> #include<iostream> using namespace std; int a,b,n,p[25]; double ans1,ans2,ans3,q[25]; int main() { scanf("%d%d%d",&n,&a,&b); for(int i=1;i<=n;i++)scanf("%d",&p[i]); for(int i=1;i<=n;i++) { while(p[i]!=i) { ans1+=a; swap(p[i],p[p[i]]); } } if(n>=8)ans2=114514; else { ans2=b; for(int i=1;i<=n;i++)ans2*=i; } q[1]=0; for(int i=2;i<=n;i++) { q[i]=q[i-1]+((1.0*(i-1))/(1.0*i)); } ans3=q[n]*a+b; printf("%.15lf",ans1<ans2?(ans1<ans3?ans1:ans3):(ans2<ans3?ans2:ans3)); return 0; }