Pagini recente » Cod sursa (job #2329915) | Cod sursa (job #1737075) | Cod sursa (job #1007889) | Cod sursa (job #1570188) | Cod sursa (job #1162794)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin ("marbles.in");
ofstream fout ("marbles.out");
struct bila {
int x;
int c;
}v[100010];
bool cmp (const bila &a, const bila &b) {
return a.x<b.x;
}
int n,m,i,j,st,dr,mid,x,y,a,b,op,maxim,s[65][100010];
int main () {
fin>>n>>m;
for (i=1;i<=n;i++)
fin>>v[i].x>>v[i].c;
sort (v+1,v+n+1,cmp);
for (i=1;i<=64;i++)
for (j=1;j<=n;j++) {
s[i][j]=s[i][j-1];
if (v[j].c==i)
s[i][j]++;
}
while (m--) {
fin>>op>>a>>b;
if (op) {
st=1;dr=n;
while(st<=dr) {
mid=(st+dr)/2;
if(v[mid].x<a)
st=mid+1;
else
dr=mid-1;
}
x=st;
st=1;dr=n;
while(st<=dr) {
mid=(st+dr)/2;
if(v[mid].x<=b)
st=mid+1;
else
dr=mid-1;
}
y=dr;
maxim=0;
for (i=1;i<=64;i++)
if (maxim < s[i][y]-s[i][x-1])
maxim=s[i][y]-s[i][x-1];
fout<<maxim<<"\n";
}else {
st=1;dr=n;
while(st<=dr) {
mid=(st+dr)/2;
if(v[mid].x<a)
st=mid+1;
else
dr=mid-1;
}
x=st;
v[x].x+=b;
}
}
return 0;
}