Pagini recente » Cod sursa (job #853656) | Cod sursa (job #2280604) | Cod sursa (job #2734091) | Cod sursa (job #1742078) | Cod sursa (job #479533)
Cod sursa(job #479533)
#include <stdio.h>
#include <algorithm>
using namespace std;
struct bila
{
int x, y;
} v[100002];
int n, m, sp[100002][66];
inline int max (int a, int b) {return a > b ? a : b;}
inline int cmp (bila a, bila b)
{
return a.x < b.x;
}
int cautare (int x)
{
int st = 1, dr = n, m, sol = 0;
while (st <= dr)
{
m = (st + dr) >> 1;
if (v[m].x <= x)
{
sol = m;
st = m + 1;
}
else
dr = m - 1;
}
return sol;
}
int main ()
{
freopen ("marbles.in", "r", stdin);
freopen ("marbles.out", "w", stdout);
scanf ("%d %d", &n, &m);
int i, j, t, x, y, sol;
for (i = 1; i <= n; i ++)
scanf ("%d %d", &v[i].x, &v[i].y);
sort (v + 1, v + n + 1, cmp);
for (i = 1; i <= n; i ++)
{
sp[i][v[i].y] = 1;
for (j = 1; j <= 64; j ++)
sp[i][j] += sp[i - 1][j];
}
for (i = 1; i <= m; i ++)
{
scanf ("%d %d %d", &t, &x, &y);
if (t == 0)
v[cautare (x)].x += y;
else
{
sol = 0;
x = cautare (x - 1);
y = cautare (y) + 1;
for (j = 1; j <= 64; j ++)
sol = max (sol, sp[y][j] - sp[x][j]);
printf ("%d\n", sol);
}
}
return 0;
}