题解:B3951 [GESP样题 五级] 小杨的队列

· · 题解

纯模拟

思路

先读入数组,接下来每进来一个人,就从前往后枚举,如果遇见比他高的人,就把他们交换,并将操作次数加一。

数组枚举完毕后,输出操作次数即可

代码

#include<bits/stdc++.h>
using namespace std;
#define int long long
int a[1000000];
int b[1000000];
signed main() {
    int n;
    cin >> n;
    int i, j, k;
    for (i = 0; i < n; i++) {
        cin >> a[i];
    }
    int m;
    cin >> m;
    for (i = 1; i <= m; i++) {
        cin >> k;
        b[i] = a[k];
        int ans = 0;
        for (j = 1;j<=i; j++) {
            if (b[j] > b[i]) {
                swap(b[i], b[j]);
                ans++;
            }
        }
        cout << ans << endl;
    }
}