省略
省略
C++に変換後のコードはこちら
int N, A[1d5];
double c[100001], cnv[200001];
ll s[100001];
int mn[100001];
{
int i;
ll tk;
mint res, tmp;
double dmin, dtmp;
rd(N,A(N));
res = 1;
rep(i,N) c[A[i]]++;
convolution(c, 100001, cnv, 200001);
rep(i,N) cnv[2A[i]]--;
rep(i,200001){
tk = (ll)(cnv[i]/2 + 0.5);
if(tk) res *= (mint(i) ** tk);
}
for(i=N-1;i>=0;i--) s[i] = s[i+1] + A[i];
rep(i,N) res *= (mint(A[i]) ** s[i+1]);
mn[N] = int_inf;
for(i=N-1;i>=0;i--) mn[i] = min(mn[i+1], A[i]);
dmin = 1e300;
for(i=N-2;i>=0;i--){
dtmp = log(A[i] + mn[i+1]) + log(A[i]) * mn[i+1];
if(dtmp < dmin){
dmin = dtmp;
tmp = (A[i] + mn[i+1]) * ( mint(A[i]) ** mn[i+1] );
}
}
res /= tmp;
wt(res);
}
Current time: 2024年04月20日03時49分14秒
Last modified: 2019年08月21日06時07分33秒 (by laycrs)
Tags: Competitive_Programming_Incomplete yukicoder
トップページに戻る
Logged in as: unknown user (not login)