Pagini recente » Cod sursa (job #544325) | Cod sursa (job #610252) | Cod sursa (job #2922823) | Cod sursa (job #2921222) | Cod sursa (job #1006107)
#include<fstream>
#include<cstdio>
#include<algorithm>
using namespace std;
int n,m,C[65],nrc,sum[65][100100],X[100100],sol;
struct Bila{
int x,color;
bool operator <(const Bila &A) const
{
return x<A.x;
}
};
Bila v[100100];
bool viz[65];
int main()
{
int i,j,c,op,poz,st,dr;
freopen("marbles.in","r",stdin);
freopen("marbles.out","w",stdout);
scanf("%d %d",&n,&m);
for(i=1;i<=n;i++)
{
scanf("%d %d",&v[i].x,&v[i].color);
viz[v[i].color]=true;
}
for(c=1;c<=64;c++)
if(viz[c])
C[++nrc]=c;
sort(v+1,v+n+1);
for(i=1;i<=n;i++)
{
for(c=1;c<=nrc;c++)
sum[C[c]][i]=sum[C[c]][i-1];
sum[v[i].color][i]++;
X[i]=v[i].x;
}
while(m--)
{
scanf("%d %d %d",&op,&i,&j);
if(op==0)
{
poz=lower_bound(X+1,X+n+1,i)-X;
X[poz]+=j;
}
else
{
st=lower_bound(X+1,X+n+1,i)-X;
dr=upper_bound(X+st,X+n+1,j)-X-1;
sol=0;
for(c=1;c<=nrc;c++)
sol=max(sol,sum[C[c]][dr]-sum[C[c]][st-1]);
printf("%d\n",sol);
}
}
return 0;
}