Pagini recente » Cod sursa (job #1064297) | Cod sursa (job #3221463) | Cod sursa (job #914860) | Cod sursa (job #108988) | Cod sursa (job #1413763)
#include <cstdio>
#include <algorithm>
#define f first
#define s second
using namespace std;
pair <long long, int> v[100010];
int frq[128][100010], n;
inline int cb (long long x)
{
int a = 1, b = n;
while (a <= b)
{
int m = (a + b) >> 1;
if (v[m].f == x) return m;
if (v[m].f > x) b = m - 1;
else a = m + 1;
}
return a;
}
int main ()
{
freopen ("marbles.in", "r", stdin);
freopen ("marbles.out", "w", stdout);
int m;
scanf ("%d %d", &n, &m);
int mi = 128, ma = 0;
for (int i = 1; i <= n; ++i)
{
scanf ("%lld", &v[i].f);
scanf ("%d", &v[i].s);
ma = max (ma, v[i].s);
mi = min (mi, v[i].s);
}
sort (v + 1, v + n + 1);
for (int i = 1; i <= n; ++i)
{
for (int j = mi; j <= ma; ++j)
frq[j][i] = frq[j][i - 1];
++frq[v[i].s][i];
}
for (int i = 1; i <= m; ++i)
{
int op;
long long x, y;
scanf ("%d", &op);
scanf ("%lld %lld", &x, &y);
if (!op)
{
int b = cb (x);
v[b].f += y;
}
else
{
int a = cb (x);
int b = cb (y);
if (v[b].f != y) --b;
int ma2 = 0;
for (int j = mi; j <= ma; ++j)
ma2 = max (ma2, frq[j][b] - frq[j][a - 1]);
printf ("%d\n", ma2);
}
}
return 0;
}