Description
题目传送门:P10522 [XJTUPC2024] 雪中楼。
由于 $n \le 2 \times 10^5$,插入次数太多,考虑维护链表。
Analysis
对于每次操作,输入 $a_i$,若 $i=0$ 就将 $a_i$ 插到链表尾部,否则插到 $a_i$ 左边,最后翻转完输出,就这么简单。
Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| #include <bits/stdc++.h> using namespace std;
#define MAXN 2e5 + 10
list <int> l; list <int> :: iterator number[int(MAXN)] = { l.begin() , l.end() };
main() { int n; cin >> n; for(int i = 1 ; i <= n ; i ++) { int x; cin >> x; number[i] = l.insert(number[x] , i); } reverse(l.begin() , l.end()); for(list <int> :: iterator it = l.begin() ; it != l.end() ; it ++) { cout << *it << " "; } return 0; }
|