Solution Of P10522 雪中楼
Preface
简单题赛时做了 30+ 分钟,太菜了。
Solution
由于每次输入
考虑维护一个链表
如
- 读入
a_1=0 ,将i=1 插入到尾部,序列变成\{1\} 。 - 读入
a_2=0 ,将i=2 插入到尾部,序列变成\{1,2\} 。 - 读入
a_3=0 ,将i=3 插入到尾部,序列变成\{1,2,3\} 。 - 读入
a_4=0 ,将i=4 插入到尾部,序列变成\{1,2,3,4\} 。 - 读入
a_5=2 ,将i=5 插入到下标2 的左边,序列变成\{1,5,2,3,4\} 。
最后翻转即可。
AC Code
#include<bits/stdc++.h>
using namespace std;
list <int> q;
list <int> :: iterator
p[200005] = {q.begin(), q.begin()};
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL), cout.tie(NULL);
int n;
cin >> n;
for (int i=1, x; i<=n; i++)
cin >> x, p[i] = q.insert(p[x], i);
reverse (q.begin(), q.end());
for (auto i : q) cout << i << ' ';
return 0;
}