Pagini recente » Cod sursa (job #1048171) | Cod sursa (job #1947363) | Cod sursa (job #41782) | Cod sursa (job #600965) | Cod sursa (job #497241)
Cod sursa(job #497241)
#include<stdio.h>
#include<utility>
#include<algorithm>
using namespace std;
int nr[66][100100],poz[100100],N,M;
int muta(int x){
int p=1,u=N,mij;
while(p<u){
mij=p+(u-p)/2;
if(x<=poz[mij])
u=mij;
else
p=mij+1;
}
return p;
}
int main(){
freopen("marbles.in","r",stdin);
freopen("marbles.out","w",stdout);
int i,a,b,x,y;
scanf("%d%d",&N,&M);
for(i=1;i<=N;++i){
scanf("%d%d",&a,&b);
nr[b][i]=1;
poz[i]=a;
}
sort(poz+1,poz+N+1);
for(i=1;i<=64;++i){
for(a=2;a<=poz[N];++a)
nr[i][a]+=nr[i][a-1];
}
for(i=0;i<M;++i){
scanf("%d",&a);
if(!a){
scanf("%d%d",&a,&b);
poz[muta(a)]+=b;
}
else{
scanf("%d%d",&a,&b);
x=(lower_bound(poz+1,poz+N+1,a)-poz);
y=(upper_bound(poz+1,poz+N+1,b)-poz);
if(poz[x]!=a)
++x;
if(poz[y]!=b)
--y;
b=-10;
for(a=1;a<=64;++a){
if(nr[a][y]-nr[a][x]+1>b)
b=nr[a][y]-nr[a][x]+1;
}
printf("%d\n",b);
}
}
fclose(stdin);
fclose(stdout);
return 0;
}