L-中位数_2023河南萌新联赛第(一)场:河南农业大学 (nowcoder.com)
树状数组+二分

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=2e6;
const long long inf = 0x7f7f7f7f7f7f7f7f;
#define endl '\n'
int f[N];
int n,m;
int lowbit(int x){
    return x&(-x);
}
int a[N];
void add(int x,int y){
    for(int i=x;i<=1e6;i+=lowbit(i)){
        f[i]+=y;
    }
}
int sum(int x){
    ll res=0;
    for(int i=x;i;i-=lowbit(i)){
       res+=f[i];
    }
    return res;
}
int check(int mid){
//     cout<<sum(mid)<<" "<<n<<endl;
    if(sum(mid)>=(n+1)/2)return 1;
    else return 0;
}
int main(){
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        cin>>a[i];
        add(a[i],1);
    }
    while(m--){
        int p,x;
        cin>>p>>x;
        add(a[p],-1);
        a[p]=x;
        add(a[p],1);
        ll l=0,r=1e6;
        while(l<=r){
            ll mid=(l+r)/2;
//             cout<<mid<<" "<<check(mid)<<endl;
            if(check(mid))r=mid-1;
            else l=mid+1;
        }
        cout<<l<<endl;
    }
    return 0;
}













![AuthenticationFailedException: 526 Authentication failure[0]的解决方案](https://img-blog.csdnimg.cn/1a2f30662d5d415f82ee3e1b374cd7f1.png)





