省略
省略
C++に変換後のコードはこちら
int N, Q, A[1d5], T, L, R;
int go[17][1d5];
{
int i, j, k;
rd(N,Q,A(N));
rep(j,17) go[j][N-1] = N;
for(i=N-2;i>=0;i--){
if(A[i] < A[i+1]){
go[0][i] = i+1;
} else {
k = i+1;
for(;;){
if(go[0][k]==N) go[0][i] = N, break;
if(A[go[0][k]] > A[i]) go[0][i] = go[0][k], break;
rep(j,1,17) if(go[j][k]==N || A[go[j][k]] > A[i]) break;
k = go[j-1][k];
}
}
rep(j,1,17){
if(go[j-1][i]==N) go[j][i] = N;
else go[j][i] = go[j-1][go[j-1][i]];
}
}
rep(Q){
rd(T,L--,R--);
k = 0;
for(;;){
if(go[0][L] > R) k++, break;
rep(j,16) if(go[j+1][L] > R) break;
k += (1<<j);
L = go[j][L];
}
wt(k);
}
}
Current time: 2024年04月26日09時29分22秒
Last modified: 2019年09月21日11時57分01秒 (by laycrs)
Tags: Competitive_Programming_Incomplete yukicoder
トップページに戻る
Logged in as: unknown user (not login)