这满打满算也才100M不到啊
#include <bits/stdc++.h>
using namespace std;
const int N=5e5+5;
int n,q,a[N],b[N],lst[N];
multiset<long long> all_min,side_min,all;
int main() {
cin>>n>>q;
for(int i=1;i<=n;i++){
cin>>a[i];
all.insert(a[i]);
if(i!=1) side_min.insert( abs(a[i]-a[i-1]) );
lst[i]=a[i];
b[i]=a[i];
}
sort(b+1,b+n+1);
for(int i=1;i<n;i++) all_min.insert( abs(b[i]-b[i+1]));
while(q--){
string op;
cin>>op;
if(op=="INSERT"){
int pos,num;
cin>>pos>>num;
all.insert(num);
auto it = all.find(num);
auto x = ++it, y = --(--it);
++it;
if(it!=all.begin() && x!=all.end() ){
auto old=all_min.find( *x - *y );
all_min.erase(old);
}
if(it!=all.begin()){
all_min.insert( *it - *y );
}
if(x!=all.end() ){
all_min.insert( *x - *it );
}
//总体
if(pos!=n){
int old=abs(a[pos+1]-lst[pos]);
side_min.erase( side_min.find(old));
side_min.insert( abs(a[pos+1]-num) );
side_min.insert( abs(lst[pos]-num) );
}
//两边
lst[pos]=num;
}
if(op=="MIN_GAP"){
auto ans=side_min.begin();
cout<<*ans<<endl;
}
if(op=="MIN_SORT_GAP"){
auto ans=all_min.begin();
cout<<*ans<<endl;
}
}
return 0;
}
/*
6 4
3 7 14 9 5 18
*/