Pagini recente » Cod sursa (job #2811720) | Cod sursa (job #1341308) | Cod sursa (job #2452835) | Cod sursa (job #895739) | Cod sursa (job #2080903)
#include <cstdio>
#include <algorithm>
using namespace std;
int a[65][100001];
int v[65];
int main()
{
FILE *fin=fopen ("marbles.in","r");
FILE *fout=fopen ("marbles.out","w");
int n,m,i,j,cer,x,y,st,dr,mid,p,u,sol;
fscanf (fin,"%d%d",&n,&m);
for (i=1;i<=n;i++){
fscanf (fin,"%d%d",&x,&y);
v[y]++;
a[y][v[y]]=x;
}
for (i=1;i<=n;i++)
sort (a[i]+1,a[i]+v[i]+1);
for (i=1;i<=m;i++){
fscanf (fin,"%d%d%d",&cer,&x,&y);
if (cer==0){
for (j=1;j<=n;j++){
st=1;
dr=v[j];
while (st<=dr){
mid=(st+dr)/2;
if (a[j][mid]==x)
break;
else if (a[j][mid]<x)
st=mid+1;
else dr=mid-1;
}
if (st<=dr){
a[j][mid]=x+y;
break;
}
}
}
else {
sol=0;
for (j=1;j<=n;j++){
st=1;
dr=v[j];
while (st<=dr){
mid=(st+dr)/2;
if (a[j][mid]<x)
st=mid+1;
else dr=mid-1;
}
p=st;
st=1;
dr=v[j];
while (st<=dr){
mid=(st+dr)/2;
if (a[j][mid]<=y)
st=mid+1;
else dr=mid-1;
}
u=st;
sol=max(sol,u-p);
}
fprintf (fout,"%d\n",sol);
}
}
return 0;
}