我错哪了(4pts)
查看原帖
我错哪了(4pts)
1345652
Luliuyan114514楼主2024/7/11 19:50
#include<iostream>
#include<algorithm>
using namespace std;
struct VAR{
	int v,id=0;
}now[100005],a[100005];
bool cmp(VAR x,VAR y)
{
	return x.v<y.v;
}
int find(int n,int v)
{
	int pos=0;
	for(int i=1;i<=n;++i)
	{
		if(now[i].v==v) pos=i;
	}
	return pos;
}
int find2(int n,int v)
{
	for(int i=1;i<=n;++i)
	{
		if(now[i].v==v) return i;
	}
	return 0;
}
void Insert(int n,int v,int x,int y)
{
	for(int i=x;i<=n;++i)
	{
		swap(now[i],now[i+1]);
	}
	for(int i=n;i>=2;--i)
	{
		if(cmp(now[i],now[i-1]))
		{
			swap(now[i],now[i-1]);
		}
	}
	a[y].v=v;
	a[y].id=find(n,v);
}
int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	int n,q;
	cin>>n>>q;
	for(int i=1;i<=n;++i)
	{
		cin>>a[i].v;
		now[i].v=a[i].v;
		now[i].id=i;
	}
	for (int i = 1; i <= n; i++)
	{
	    for (int j = i; j >= 2; j--)
	    {
	        if (cmp(now[j],now[j-1]))
	        {
	            swap(now[j],now[j-1]);
	    	}
	    }
	}
	for(int i=1;i<=n;++i)
	{
		a[i].id=find(n,a[i].v);
	}
	while(q--)
	{
		int o;
		cin>>o;
		int x,v;
		cin>>x;
		if(o==1)
		{
			cin>>v;
		}
		if(o==1)
		{
			now[a[x].id].v=v;
			swap(now[a[x].id],now[n+1]);
			Insert(n,v,a[x].id,x);
		}
		else
		{
			cout<<a[x].id<<"\n";
		}
	}
	return 0;
}
2024/7/11 19:50
加载中...