题解
2026-10-03 09:35:40
发布于:江西
8阅读
0回复
0点赞
这道题刚开始我是想做一个函数,模拟他插入排序的过程,后来我决定直接通过sum找排序后的u,且分两种情况:u以下时,因为sum是n,直接--就行了,但当i到u以上时,u会被排在相同项的后面,(因为如果前面你没找到,就会有相同项重合的情况),所以等于的时候也要--(还有就是刚才只是猜测,这个还有一个原因是a从零开始)
。
所以就有以下代码:
#include <bits/stdc++.h>
using namespace std;
int a[10000];
int n,q;
int main() {
cin>>n>>q;
for(int i=1;i<=n;i++){
cin>>a[i];
}
while(q--){
int x,u,v;
cin>>x;
if(x==1){
cin>>u>>v;
a[u]=v;
}else{
cin>>u;
int sum=n;
for(int i=1;i<u;i++){
if(a[i]>a[u]) sum--;
}
for(int i=u+1;i<=n;i++){
if(a[i]>=a[u]) sum--;
}
cout<<sum<<endl;
}
}
return 0;
}
全部评论 1
有一个地方错位了,请见谅
4天前 来自 江西
0







有帮助,赞一个