样例通过,WA on #1~9
#include<bits/stdc++.h>
#define use(A) cout<<d[A].back()<<" ";d[A].pop_back()
#define int long long
using namespace std;
struct frac{
int x,y;
frac(int _x=0,int _y=1):x(_x),y(_y){
}
bool operator<=(frac a){
return x*a.y<=y*a.x;
}
}x[400001];
int n,m,u,v,s[400001];
int push(int l,int r,int id,frac num){
if(x[id]<=num){
return 0;
}
if(l==r){
return!(x[id]<=num);
}
if(x[id*2]<=num){
return push((l+r)/2+1,r,id*2+1,num);
}
return push(l,(l+r)/2,id*2,num)+s[id]-s[id*2];
}
void modify(int pos,int num,int l=1,int r=n,int id=1){
if(r<pos||l>pos){
return;
}
if(l==pos&&pos==r){
x[id]=frac(num,pos);
return;
}
modify(pos,num,l,(l+r)/2,id*2);
modify(pos,num,(l+r)/2+1,r,id*2+1);
x[id]=(s[id*2]<=s[id*2+1]?x[id*2+1]:x[id*2]);
s[id]=s[id*2]+push((l+r)/2+1,r,id*2+1,x[id*2]);
}
signed main(){
cin>>n>>m;
while(m--){
cin>>u>>v;
modify(u,v);
cout<<s[1]<<endl;
}
}