省略
省略
C++に変換後のコードはこちら
int N, A[18], B[18];
int dp[262144][37];
int solve(int mask, int bf){
int i, k, x = 0, c = 0, res = int_inf;
if(dp[mask][bf] >= 0) return dp[mask][bf];
rep(i,N) if(!(mask & 1<<i)) x++;
rep(i,N) if(mask & 1<<i){
k = if[(i+x)%2==0, A[i], B[i]];
if(k >= bf) res <?= solve(mask^(1<<i), k) + c;
c++;
}
return dp[mask][bf] = res;
}
{
int res;
rd(N,A(N),B(N));
coordcomp(N,A,N,B);
rep(i,1<<N) rep(j,37) dp[i][j] = -1;
rep(j,37) dp[0][j] = 0;
res = solve((1<<N)-1, 0);
wt(if[res==int_inf,-1,res]);
}
Current time: 2024年04月19日17時51分55秒
Last modified: 2020年01月19日04時39分24秒 (by laycrs)
Tags: Competitive_Programming_Incomplete AtCoder
トップページに戻る
Logged in as: unknown user (not login)