제출 #1332827

#제출 시각아이디문제언어결과실행 시간메모리
1332827NewtonabcEditor (BOI15_edi)C++20
100 / 100
157 ms28216 KiB
#include<bits/stdc++.h>
using namespace std;
const int N=3e5+10;
int a[N],d[N][20],l[N];
int fd(int x,int lv){
    //find maximum active x level<=lv
    if(l[x]<=lv) return x;
    int now=x;
    for(int i=19;i>=0;i--) if(l[d[x][i]]>lv) x=d[x][i];
    return d[x][0];
}
int main(){
    int n; cin>>n;
    for(int i=0;i<20;i++) d[1][i]=0;
    for(int i=1;i<=n;i++) cin>>a[i],l[i]=max(0,-a[i]);
    for(int i=1;i<=n;i++){
        if(l[i]){
            //undo
            int del=fd(i-1,l[i]-1);
            int lk=fd(del-1,l[i]-1);
            d[i][0]=lk;
            for(int j=1;j<=19;j++) d[i][j]=d[d[i][j-1]][j-1];
        }
        cout<<a[fd(i,0)] <<"\n";
        
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...