Pagini recente » Cod sursa (job #1694906) | Cod sursa (job #1299918) | Cod sursa (job #2124145) | Cod sursa (job #835089) | Cod sursa (job #163608)
Cod sursa(job #163608)
#include <stdio.h>
int max,p1,p2,x,y,p,q,i,j,k,n,m,r;
int a[100010][2];
int v[100010][65];
int main()
{
freopen("marbles.in","r",stdin);
freopen("marbles.out","w",stdout);
scanf("%d%d",&n,&m);
for (i=1; i<=n; i++)
{
scanf("%d %d",&a[i][0],&a[i][1]);
for (j=1; j<=64; j++)
v[i][j]=v[i-1][j];
v[i][a[i][1]]++;
}
for (i=1; i<=m; i++)
{
scanf("%d %d %d",&k,&x,&y);
if (k==0)
{
p=0;q=n+1;
while (p+1<q)
{
r=(p+q)/2;
if (a[r][0]>x) q=r;
else if (a[r][0]<x)p=r;
else break;
}
a[r][0]=a[r][0]+y;
}
else
{
if (x>y)
{
p=x;x=y;y=p;
}
p=0;q=n+1;
while (p+1<q)
{
r=(p+q)/2;
if (a[r][0]>=x)
{
q=r;
p1=r;
}
else if (a[r][0]<x) p=r;
}
p=0;q=n+1;
while (p+1<q)
{
r=(p+q)/2;
if (a[r][0]<=y)
{
p=r;
p2=r;
}
else if (a[r][0]>y) q=r;
}
p1--;max=0;
for (j=1; j<=64; j++)
if (v[p2][j]-v[p1][j]>max) max=v[p2][j]-v[p1][j];
printf("%d\n",max);
}
}
return 0;
}