Pagini recente » Cod sursa (job #2289857) | Cod sursa (job #925805) | Cod sursa (job #1764352) | Cod sursa (job #818174) | Cod sursa (job #317322)
Cod sursa(job #317322)
#include<stdio.h>
#include<algorithm>
using namespace std;
struct bila{long x,c;}a[100005];
long n,m,i,mac,ma,j,nr[70][100005],x[100005],op,st,dr,poz,poz1;
int cmp(bila A,bila B)
{if(A.x<B.x)return 1;
return 0;}
int main()
{
freopen("marbles.in","r",stdin);
freopen("marbles.out","w",stdout);
scanf("%ld%ld",&n,&m);
for(i=1;i<=n;++i)
{scanf("%ld%ld",&a[i].x,&a[i].c);
if(a[i].c>mac)mac=a[i].c;}
sort(a,a+n,cmp);
for(i=1;i<=mac;++i)
for(j=1;j<=n;++j)
nr[i][j]=nr[i][j-1]+(a[j].c==i);
for(i=1;i<=n;++i)
x[i]=a[i].x;
for(i=1;i<=m;++i)
{scanf("%ld%ld%ld",&op,&st,&dr);
long* p=lower_bound(x,x+n,st);
poz=p-x;
if(op==0)a[poz].x+=dr,x[poz]+=dr;
else
{p=lower_bound(x,x+n,dr);
poz1=p-x;
ma=0;
if(x[poz]<st)++poz;
if(x[poz1]<dr)++poz1;
for(j=1;j<=mac;++j)
if(nr[j][poz1]-nr[j][poz-1]>ma)ma=nr[j][poz1]-nr[j][poz-1];
printf("%ld\n",ma);}}
return 0;
}