96分在线求助!
查看原帖
96分在线求助!
592273
封禁用户楼主2021/10/24 15:38
#include<bits/stdc++.h>
using namespace std;
struct NUM{
    int val,pos;
}num[8010];
int n,cha[8010];
void insertSort()/
{
    for(int i=1;i<=n;i++)
    {
        for(int j=i;j>=2;j--)
        {

            if(num[j-1].val>num[j].val)
            {
                swap(num[j-1],num[j]);

            }
            if(num[j-1].val==num[j].val&&num[j-1].pos>num[j].pos)
            {
                swap(num[j-1],num[j]);
            }

        }   
    } 
}
void gai(int x,int v)/
{
    int i; 
    
    for(i=1;i<=n;i++)
    {
        if(num[i].pos==x)
        {
            num[i].val=v;
            break;
        }
    }

    
    while(num[i-1].val>num[i].val || (num[i-1].val==num[i].val&&num[i-1].pos>num[i].pos))
    {
        swap(num[i-1],num[i]);
        i--;
        if(i<=1)
            break;
    } 

    
    while(num[i+1].val<num[i].val||(num[i+1].val==num[i].val&&num[i+1].pos<num[i].pos))
    {
        swap(num[i+1],num[i]);
        i++;
        if(i>=n)
            break;
    } 

    for(int i=1;i<=n;i++)
    {
        cha[num[i].pos]=i;
    }

}

//void show()
//{
//  cout<<endl;
//  cout<<"num数组:值 -- 原位置"<<endl; 
//  for(int i=1;i<=n;i++)
//  {
//      cout<<num[i].val<<" "<<num[i].pos<<endl; 
//  }
//  cout<<endl;
//  cout<<"cha数组:原位置 -- 现在位置 "<<endl; 
//  for(int i=1;i<=n;i++)
//  {
//      cout<<i<<" "<<cha[i]<<endl; 
//  }
//  cout<<endl;
//}
int main(){
    int Q;
    cin>>n>>Q;
    for(int i=1;i<=n;i++)
    {
        cin>>num[i].val;
        num[i].pos=i;
    }
    insertSort(); 

    for(int i=1;i<=n;i++)
    {
        cha[num[i].pos]=i;/

    }

//  show();

    while(Q--)
    {
        int q,x,v;
        cin>>q;
        if(q==1)
        {
            cin>>x>>v;
            gai(x,v);
//          show();
        }
        else
        {
            cin>>x;
            cout<<cha[x]<<endl; 
        }

    }

    return 0;
}
2021/10/24 15:38
加载中...