Pagini recente » Cod sursa (job #2162900) | Cod sursa (job #3260584) | Cod sursa (job #2135811) | Cod sursa (job #631602) | Cod sursa (job #2126789)
#include <fstream>
#include <algorithm>
#define x first
#define c second
using namespace std;
int s[100003][65];
pair <int,int> x[100003];
int main()
{ int st,dr,mij,m,n,poz,l,r,i,j,p,tip;
ifstream f("marbles.in");
ofstream g("marbles.out");
f>>n>>m;
for (i=1;i<=n;++i)
f>>x[i].x>>x[i].c;
sort(x+1,x+n+1);
for (i=1;i<=n;++i) {
for (j=1;j<=64;++j)
s[i][j]=s[i-1][j];
++s[i][x[i].c];
}
for (p=1;p<=m;++p) {
f>>tip>>i>>j;
if (tip==0) {
st=1,dr=n;
while (st<=dr) {
mij=(st+dr)/2;
if (x[mij].x<i) st=mij+1;
if (x[mij].x==i) {
poz=mij;
break;
}
if (x[mij].x>i) dr=mij-1;
}
x[poz].x+=j;
}
else {
l=n;
st=1,dr=n;
while (st<=dr) {
mij=(st+dr)/2;
if (x[mij].x<i) st=mij+1;
else l=min(l,mij),dr=mij-1;
}
r=n;
st=1,dr=n;
while (st<=dr) {
mij=(st+dr)/2;
if (x[mij].x<j) st=mij+1;
else r=min(r,mij),dr=mij-1;
}
int Max=0;
for (i=1;i<65;++i)
Max=max(Max,s[r][i]-s[l-1][i]);
g<<Max<<'\n';
}
}
return 0;
}