鹿島建設プログラミングコンテスト2020(AtCoder Regular Contest 110)
問題文
省略
省略
C++に変換後のコードはこちら
int N, P[100], ind[100];
int ress, res[2d5];
void doit(int i){
int k = (i + P[i]) % N;
res[ress++] = i;
swap(P[i], P[k]);
ind[P[i]] = i;
ind[P[k]] = k;
}
{
int len;
rd(N,P(N));
rep(i,N) ind[P[i]] = i;
len = 1;
while(len < N-1){
if(P[(ind[1]+len)%N] == 1+len) len++, continue;
rep(i,len) doit(ind[i+1]);
}
for(;;){
rep(i,N) if(P[i] != i) break;
if(i==N) break;
doit(ind[1]);
}
wtLn(ress,res(ress));
}
Current time: 2024年04月24日20時04分56秒
Last modified: 2020年12月06日02時30分37秒 (by laycrs)
Tags: Competitive_Programming_Incomplete AtCoder AtCoder_Regular_Contest ARC110 ARC_F
トップページに戻る
Logged in as: unknown user (not login)