Pagini recente » Cod sursa (job #2700192) | Cod sursa (job #1448455) | Cod sursa (job #846867) | Cod sursa (job #2964057) | Cod sursa (job #1412984)
#include <cstdio>
#include <vector>
#include <algorithm>
#define f first
#define s second
using namespace std;
vector <pair <long long, int> > v;
int frq[128];
inline int cb (long long x)
{
int a = 0, b = v.size () - 1;
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 n, m;
scanf ("%d %d", &n, &m);
for (int i = 1; i <= n; ++i)
{
long long x;
int y;
scanf ("%lld", &x);
scanf ("%d", &y);
v.push_back (make_pair (x, y));
}
sort (v.begin (), v.end ());
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);
pair <long long, int> a = v[b];
v.erase (v.begin () + b);
a.f += y;
b = cb (a.f);
v.insert (v.begin () + b, a);
}
else
{
int a = cb (x);
int b = cb (y);
if (v[b].f != y) --b;
for (int j = a; j <= b; ++j)
frq[v[j].s] = 0;
int ma = 0;
for (int j = a; j <= b; ++j)
{
++frq[v[j].s];
ma = max (ma, frq[v[j].s]);
}
printf ("%d\n", ma);
}
}
return 0;
}