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

发布于

传送门:点我进入

本题较为简单,模拟即可通过。

定义两个数组,分别为​a[](存每个序号对应的身高),​b[](存排列后的序列)

对于第​i次查询​x,将​a[x]赋值给​b[i]。然后将​b[1]~b[i]遍历一遍,如果有下标小于​i且身高大于​b[i]的数,就将其与​b[i]进行交换。最后让 res++即可。

完整代码(C++)

#include<bits/stdc++.h>

using namespace std;

const int N = 2005;

int n, a[N], b[N], m;

int main(){
    cin >> n;
    for(int i = 0; i < n; i++){
        cin >> a[i];
    }
    cin >> m;
    for(int i = 1; i <= m; i++){
        int x;
        cin >> x;
        b[i] = a[x];
        int res = 0;
        for(int j = 0; j <= i; j++){
            if(b[j] > b[i]){
                swap(b[j], b[i]);
                res++;
            }
        }
        cout << res << endl;
    }
    return 0;
}
浏览(4)
评论

请登录后发表观点

暂无数据