#include using namespace std; struct Fenwick_tree{ private: unsigned int siz=1; unsigned int d=1; vector dat; public: Fenwick_tree(int N) : dat(N,0){ siz=N; d=bit_floor(siz-1); } void add(int k,int x){ for(int i=k;i0;h/=2){ if(ans+h<=siz){ if(res+dat[ans+h-1]<=x){ res+=dat[ans+h-1]; ans+=h; } } } return ans; } }; signed main(){ int N,Q; scanf("%d%d",&N,&Q); vector A(N); for(int i=0;i data=A; vector> query(Q); for(int i=0;i data2=data; sort(data2.begin(),data2.end()); data2.erase(unique(data2.begin(),data2.end()),data2.end()); for(long long &i : data){ i=lower_bound(data2.begin(),data2.end(),i)-data2.begin(); } vector relation(*max_element(data.begin(),data.end())+1); for(int i=0;i change; vector change2(N,false); Fenwick_tree tree(relation.size()); for(int i=0;i