Pagini recente » Cod sursa (job #828581) | Cod sursa (job #415802) | Cod sursa (job #225541) | Cod sursa (job #330528) | Cod sursa (job #502521)
Cod sursa(job #502521)
#include<stdio.h>
#include<utility>
#include<algorithm>
using namespace std;
struct baza{
int a,b;
}init[100100];
struct cmp{
bool operator()(const baza x,const baza y)const{
if(x.a<y.a)
return true;
return false;
}
};
int nr[70][100100],poz[100100],N,M;
int caut(int x){
int p=1,u=N,mij,ss=0;
while(p<=u){
mij=(p+u)/2;
if(poz[mij]<=x){
ss=mij;
p=mij+1;
}
else
u=mij-1;
}
return ss;
}
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",&init[i].a,&init[i].b);
sort(init+1,init+N+1,cmp());
for(i=1;i<=N;++i){
nr[init[i].b][i]=1;
poz[i]=init[i].a;
}
for(i=1;i<=64;++i){
for(a=2;a<=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[caut(a)]+=b;
}
else{
scanf("%d%d",&a,&b);
x=caut(a-1);
y=caut(b);
b=-10;
for(a=1;a<=64;++a){
if(nr[a][y]-nr[a][x]>b)
b=nr[a][y]-nr[a][x];
}
printf("%d\n",b);
}
}
fclose(stdin);
fclose(stdout);
return 0;
}