[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)

