#include using namespace std; template vector> structure_segmenttree_create(vector initial,function op,type unit){ int n=initial.size(); int expandedsize=1; int depth=1; while(expandedsize> ret(depth); ret[0]=initial; for(int i=1;i void structure_segmenttree_update(vector>& tree,int index,type value,function op){ tree[0][index]=value; for(int i=1;i type structure_segmenttree_query(vector>& tree,int left,int right,function op,type unit,int depth=0){ type answer=unit; if(left==right){ return unit; } if(left%2==1){ answer=tree[depth][left]; } if(right%2==1){ answer=op(answer,tree[depth][right-1]); } return op(answer,structure_segmenttree_query(tree,(left+1)/2,right/2,op,unit,depth+1)); } int main(){ int N,K; cin>>N>>K; vector array(1000001); function add=[](int a,int b){return a+b;}; vector> t=structure_segmenttree_create(array,add,0); int W; int num=0; int ans=0; for(int i=0;i>W; if(W<0){ W=-W; num=structure_segmenttree_query(t,W,W+1,add,0); if(num>0){ structure_segmenttree_update(t,W,num-1,add); ans--; } }else{ num=structure_segmenttree_query(t,W,W+1,add,0); if(structure_segmenttree_query(t,W,1000001,add,0)