This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
int rmq[300005][20],n,i,v[300005],lev[300005],sal,j;
int parinte(int x,int nivel)
{
if (lev[x]<=nivel)
{
return x;
}
for (int i=19;i>=0;i--)
{
if (lev[rmq[x][i]]>nivel)
{
x=rmq[x][i];
}
}
return rmq[x][0];
}
int main()
{
ios_base :: sync_with_stdio(false);
cin.tie(0);
#ifdef HOME
ifstream cin("date.in");
ofstream cout("date.out");
#endif // HOME
cin>>n;
for (i=1;i<=n;i++)
{
cin>>v[i];
lev[i]=max(0,-v[i]);
if (v[i]<0)
{
sal = parinte(i-1,lev[i]-1);
assert(sal);
rmq[i][0]=parinte(sal-1,lev[i]-1);
assert(lev[i]>lev[rmq[i][0]]);
for (j=1;j<=19;j++)
{
rmq[i][j]=rmq[rmq[i][j-1]][j-1];
}
}
cout<<v[parinte(i,0)]<<'\n';
}
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |