← 查看本卷题目
组合题5 个小题
已作答 0 / 5

对于一个 11 到 nn 的排列 PP(即 11 到 nn 中每一个数在 PP 中出现了恰好一次),令 q[i] 为第 ii 个位置之后第一个比 P[i] 值更大的位置,如果不存在这样的位置,则 q[i] = n + 1。举例来说,如果 n = 5 且 P 为 1 5 4 2 3 ,则 q 为2 6 6 5 6。

下列程序读入了排列 PP ,使用双向链表求解了答案。试补全程序。

#include <iostream>using namespace std; const int N = 100010;int n;int L[N], R[N], a[N]; int main() {    cin >> n;    for (int i = 1; i <= n; ++i) {        int x;        cin >> x;        ① ;    }     for (int i = 1; i <= n; ++i) {        R[i] = ② ;        L[i] = i - 1;    }     for (int i = 1; i <= n; ++i) {        L[ ③ ] = L[a[i]];        R[L[a[i]]] = R[ ④ ];    }     for (int i = 1; i <= n; ++i) {    	cout << ⑤ << " ";    }     cout << endl;    return 0;}
第 28 题填空题

④处应填( )

填写答案