Pagini recente » Cod sursa (job #1899221) | Cod sursa (job #325753)
Cod sursa(job #325753)
#include<stdio.h>
#define DIM 100001
struct marbles
{
int p,c;
};
marbles a[DIM];
int n,b[70][DIM],maxc;
int cbin (int x)
{
int st,dr,mij;
for(st=1,dr=n;st!=dr;)
{
mij=(st+dr)/2;
if(a[st].p<x && x<a[dr].p && dr-st==1)
return st;
if(a[mij].p==x)
return mij;
if(a[mij].p>x)
dr=mij-1;
else if (a[mij].p<x)
st=mij+1;
}
return st;
}
int query (int x,int y)
{
int max=0,cul,i;
x=cbin (x);
y=cbin (y);
for(i=1;i<=maxc;++i)
if(max<(b[i][y]-b[i][x]))
{
max=b[i][y]-b[i][x];
cul=i;
}
return cul;
}
int main ()
{
freopen("marbles.in","r",stdin);
freopen("marbles.out","w",stdout);
int m,i,q,x,y,j;
scanf("%d%d",&n,&m);
for(i=1;i<=n;++i)
{
scanf("%d%d",&a[i].p,&a[i].c);
++b[a[i].c][i];
if(maxc<a[i].c)
maxc=a[i].c;
}
for(i=1;i<=maxc;++i)
for(j=2;j<=n;++j)
b[i][j]+=b[i][j-1];
for(i=1;i<=m;++i)
{
scanf("%d%d%d",&q,&x,&y);
if(q==0)
a[cbin(x)].p+=y;
else
printf("%d\n",query (x,y));
}
return 0;
}