求助!!代码求调
查看原帖
求助!!代码求调
705081
Memory_Lin楼主2022/11/23 20:22

只过#1,#2测试点,悬赏yi关注

#include<bits/stdc++.h>
using namespace std;
const int N=8e3+10;
const int M=2e5+10;
int n,q,b[N];
struct cyx{int s,num;} a[N];
inline bool cmp1(cyx x,cyx y){
	if(x.s ==y.s ) return x.num <y.num ;
	return x.s < y.s ;
}
int main()
{
	scanf("%d%d",&n,&q);
	for(int i=1;i<=n;i++){scanf("%d",&a[i].s );a[i].num =i;} 
	sort(a+1,a+1+n,cmp1);//升序 
	for(int i=1;i<=q;i++){
		bool f;
		int op,x,j,v;scanf("%d",&op);
		if(op==1) scanf("%d%d",&x,&v);
		else scanf("%d",&x);
		if(op==1){
			for(j=1;j<=n;j++){
				if(a[j].num ==x){
					if(a[j].s >v) f=0;//调小 
					else f=1;a[j].s =v;break;	
				} 
			}
			if(f){//调大 
				for(int k=j+1;k<=n;k++){
					if(a[k].s <a[j].s || a[k].s ==a[j].s &&a[k].num <a[j].num ){
						swap(a[k],a[j]);
					}else break;
				}
			}else{//调小 
				for(int k=j-1;k>=1;k--){
					if(a[k].s >a[j].s || a[k].s ==a[j].s &&a[k].num >a[j].num ){
						swap(a[k],a[j]);
					}else break;
				}
			}
		}else{
			for(int k=1;k<=n;k++){
				if(x==a[k].num ){
					printf("%d\n",k);
					break;
				}
			}
		}
	}
    return 0;
}

2022/11/23 20:22
加载中...