Pagini recente » Cod sursa (job #1430419) | Cod sursa (job #2310093) | Cod sursa (job #429090) | Cod sursa (job #681250) | Cod sursa (job #1174937)
#include<cstdio>
#include<algorithm>
using namespace std;
int tip,a,b,st,dr,i,j,p,u,mij,n,m,x[100009],y[100009],s[100009][65];
struct str
{
int x,y;
}init[100009];
bool cmp(str a,str b)
{
return a.x<b.x;
}
int ras(int x,int y)
{
int i,maxi=0;
if(x>y) return 0;
for(i=1;i<=64;i++)
if(s[y][i]-s[x-1][i]>maxi) maxi=s[y][i]-s[x-1][i];
return maxi;
}
int main()
{
freopen("marbles.in","r",stdin);
freopen("marbles.out","w",stdout);
scanf("%d",&n);
scanf("%d",&m);
for(i=1;i<=n;i++)
{
scanf("%d",&init[i].x);
scanf("%d",&init[i].y);
}
sort(init+1,init+n+1,cmp);
for(i=1;i<=n;i++)
{
x[i]=init[i].x;
y[i]=init[i].y;
}
for(i=1;i<=n;i++)
for(j=1;j<=64;j++)
s[i][j]=s[i-1][j]+(y[i]==j);
for(i=1;i<=m;i++)
{
scanf("%d",&tip);
if(tip==0)
{
scanf("%d",&a);
scanf("%d",&b);
p=1;
u=n;
while(p<=u)
{
mij=(p+u)>>1;
if(x[mij]==a) break;
if(x[mij]<a) p=mij+1;
else u=mij-1;
}
x[mij]+=b;
}
else
{
scanf("%d",&a);
scanf("%d",&b);
p=1;
u=n;
st=n+1;
while(p<=u)
{
mij=(p+u)>>1;
if(x[mij]>=a)
{
st=mij;
u=mij-1;
}
else p=mij+1;
}
p=1;
u=n;
dr=n+1;
while(p<=u)
{
mij=(p+u)>>1;
if(x[mij]<=b)
{
dr=mij;
p=mij+1;
}
else u=mij-1;
}
if(dr==n+1||st==n+1){printf("0\n");continue;}
printf("%d\n",ras(st,dr));
}
}
return 0;
}