76分求调
查看原帖
76分求调
1070431
ywtank楼主2024/10/14 21:37
#include <bits/stdc++.h>
using namespace std;
struct P{
    int v;
    int id;
    P(){
        v=id=0;
    }
    inline bool operator<(P b)const{
        if(v!=b.v){
            return v<b.v;
        }
        return id<b.id;
    }
    inline bool operator==(P b)const{
		return (v==b.v && id==b.id);

    }
}a[2*100000+10];
multiset<P> s;
int main(){
    int n,q;
    cin >> n >> q;
    for(int i=1;i<=n;i++){
        cin >> a[i].v;
        a[i].id=i;
        s.insert(a[i]);
    }
    for(int i=1;i<=q;i++){
        int b;
        cin >> b;
        if(b==1){
            int c,d;
            cin >> c >> d;
            s.erase(s.find(a[c]));
            P f;
            f.id=a[c].id;
            f.v=d;
            s.insert(f);
            a[c].v=d;
        }
        if(b==2){
            int x;
            cin >> x;
            int k=1;
            for(auto j:s){
				if(j==a[x])cout << k << '\n';
				k++;
			}
        }
    }
    return 0;
}

问题主要出在b=2时的线性复杂度
希望各位大佬看看

2024/10/14 21:37
加载中...