Pagini recente » Cod sursa (job #696436) | Cod sursa (job #122722) | Cod sursa (job #1846458) | Cod sursa (job #2636067) | Cod sursa (job #496144)
Cod sursa(job #496144)
#include <stdio.h>
#include <algorithm>
#define Nmax 100000+2
#define Cmax 64+2
using namespace std;
struct bila{ int x,cul; } v[Nmax];
int S[Nmax][Cmax];
int N,M;
inline int Maxim(int x,int y){ return x>y ? x:y; }
inline int cmp(bila a, bila b){
return a.x < b.x;
}
inline int caut_bin(int l,int r,int x){
int m,ret=0;
while( l<=r ){
m=l+(r-l)/2;
if( v[m].x >= x ){
ret=m;
r=m-1;
}
else l=m+1;
}
return ret;
}
inline int caut_bin2(int l,int r,int x){
int m,ret=0;
while( l<=r ){
m=l+(r-l)/2;
if( v[m].x <= x ){
ret=m;
l=m+1;
}
else r=m-1;
}
return ret;
}
int main(){
int i,j,op,a,b,poz,poz2,rez;
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].cul);
sort(v+1,v+N+1,cmp);
for(i=1;i<=N;++i)
for(j=1;j<=64;++j)
S[i][j]=S[i-1][j]+(v[i].cul==j);
for(i=1;i<=M;++i){
scanf("%d%d%d",&op,&a,&b);
if( op == 0 ){
poz=caut_bin(1,N,a);
v[poz].x+=b;
}
else{
poz=caut_bin(1,N,a);
poz2=caut_bin2(1,N,b);
rez=0;
for(j=1;j<=64;++j)
rez=Maxim(rez,S[poz2][j]-S[poz-1][j]);
printf("%d\n",rez);
}
}
fclose(stdin); fclose(stdout);
return 0;
}