8分求助!!
查看原帖
8分求助!!
643323
weirdoX楼主2022/8/26 14:19

不知道为啥8分,过了样例,只对了前两个点

#include <bits/stdc++.h>
using namespace std;
#define rep(i,l,r) for(int i = (int)l;i <= (int)r;i++)
#define per(i,r,l) for(int i = (int)r;i >= (int)l;i--)
#define pb push_back
#define all(a) a.begin(),a.end()
#define fi first
#define se second
#define SZ(a) (int)(a.size())
#define minst(a) memset(a,0,sizeof(a))
#define minstf(a) memset(a,128,sizeof(a))
#define maxst(a) memset(a,0x3f,sizeof(a))
typedef vector<int> VI;
typedef pair<int,int> PII;
typedef long long ll;
typedef double db;

const int N=1e4+10,INF=1e9,mod=INF+7;
int n,m;
int ans[N];
PII a[N];

int main()
{
	scanf("%d%d",&n,&m);
	rep(i,1,n){
		scanf("%d",&a[i].fi);
		a[i].se = i;
	}
	sort(a+1,a+1+n);
	rep(i,1,n)
		ans[a[i].se] = i;
	while(m--){
		int opt,x,v;
		scanf("%d%d",&opt,&x);
		if(opt == 1){
			scanf("%d",&v);
			if(v > a[ans[x]].fi){
				rep(i,ans[x]+1,n){
					if(a[i].fi < v || (a[i].fi == v && a[i].se < x)){
						swap(a[ans[x]],a[i]);
					}
				}
			}else if(v < a[ans[x]].fi){
				rep(i,1,ans[x]-1){
					if(a[i].fi > v || (a[i].fi == v && a[i].se > x)){
						swap(a[ans[x]],a[i]);
					}
				}
			}
			a[ans[x]].fi = v;
			rep(i,1,n)
				ans[a[i].se] = i;
		}else {
			printf("%d\n",ans[x]);
		}
	}
	return 0;
}
2022/8/26 14:19
加载中...