提交时间:2022-07-20 11:50:59

运行 ID: 52712

#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; }