CSP-J T2求助
  • 板块灌水区
  • 楼主V1mnkE
  • 当前回复4
  • 已保存回复4
  • 发布时间2021/10/24 08:38
  • 上次更新2023/11/4 02:31:00
查看原帖
CSP-J T2求助
477757
V1mnkE楼主2021/10/24 08:38

RT,我貌似只拿了四分

#include<bits/stdc++.h>
#define ll long long
using namespace std;
int n,q,x,k;
int a[8000];
int inb[8000];
struct p{
	int id,num;
}b[8000];
bool cmp(p a1,p b1){
	return a1.num<b1.num;
}
int main(){
	ios::sync_with_stdio(false);
	cin.tie(0);
	cin>>n>>q;
	for(int i=0;i<n;i++){
		cin>>a[i];
		b[i].id=i;
		b[i].num=a[i];
	}
	for (int i = 0; i < n; i++)
		for (int j = i; j>=1; j--)
		if ( b[j].num<b[j-1].num)swap(b[j],b[j-1]);
	for(int i=0;i<n;i++){
		inb[b[i].id]=i;
	}
	while(q--){
		cin>>k;
		if(k==1){
			int v;
			cin>>x>>v;
			int mid;
			for(mid=0;mid<n;mid++)if(b[mid].id==x-1)break;
			a[x-1]=v;
			if(b[mid].num>=v){
				b[mid].num=v;
				int i=mid;
				while(b[i].num>=b[i-1].num&&i>0)swap(b[i],b[i-1]),swap(inb[i],inb[i-1]),i--;
			
			}
			else {
				b[mid].num=v;
				int i=mid;
				while(b[i+1].num<=b[i].num&&i<n-1)swap(b[i],b[i+1]),swap(inb[i],inb[i+1]),i++;

			}
		}
		else{
			cin>>x;
			cout<<inb[x-1]+1<<endl;
		}
	}
	return 0;
}
2021/10/24 08:38
加载中...