Pagini recente » Cod sursa (job #1570239) | Cod sursa (job #530179) | Cod sursa (job #1847840) | Cod sursa (job #846987) | Cod sursa (job #1386087)
#include <fstream>
#include <algorithm>
#define nmax 100005
#define kmax 65
using namespace std;
ifstream f("marbles.in");
ofstream g("marbles.out");
int n,m,v[kmax][nmax];
struct marb{int a;int k;};
marb r[nmax];
int cautbin(int x)
{
int p=0;
for (int i=1<<16;i;i>>=1)
if (i+p<=n&&x>=r[p+i].a)
p+=i;
return p;
}
bool cmp(const marb &e,const marb &r)
{
return e.a<r.a;
}
int main()
{
int i,j,op,p,q,t;
int x,y,sol;
f>>n>>m;
for (i=1;i<=n;i++)
f>>r[i].a>>r[i].k;
sort(r+1,r+n+1,cmp);
for (i=1;i<=n+1;i++) {
for (j=1;j<kmax;j++)
v[i][j]=v[i-1][j];
v[i][r[i].k]++;
}
for (i=1;i<=m;i++) {
f>>op>>p>>q;
if (op==0) {
t=cautbin(p);
if (r[t].a==p)
r[t].a+=q;
continue;
}
x=cautbin(p);
if (r[x].a==p)
x--;
y=cautbin(q);
sol=0;
for (j=1;j<=64;j++)
sol=max(sol,v[y][j]-v[x][j]);
g<<sol<<'\n';
}
return 0;
}