Pagini recente » Cod sursa (job #1333401) | Cod sursa (job #1449524) | Cod sursa (job #1870008) | Cod sursa (job #3153589) | Cod sursa (job #3172979)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("marbles.in");
ofstream fout ("marbles.out");
struct vect
{
int poz, cul;
}v[100001];
int frec[65];
bool cond (vect a, vect b)
{
if (a.poz <= b.poz)
return true;
return false;
}
int cb2 (int x, int n)
{
int st = 1, dr = n, mij, rez;
while (st <= dr)
{
mij = (st + dr) / 2;
if (v[mij].poz > x) dr = mij - 1;
else rez = mij, st = mij + 1;
}
return rez;
}
int cb1 (int x, int n)
{
int st = 1, dr = n, mij, rez;
while (st <= dr)
{
mij = (st + dr) / 2;
if (v[mij].poz < x) st = mij + 1;
else rez = mij, dr = mij - 1;
}
return rez;
}
int main()
{
int n, k, x, cer, ind1, ind2;
fin >> n >> k;
for (int i = 1; i <= n; i ++)
fin >> v[i].poz >> v[i].cul;
sort (v + 1, v + 1 + n, cond);
for (int i = 1; i <= k; i ++)
{
fin >> cer >> ind1 >> ind2;
if (!cer)
{
int a = cb1(ind1, n);
v[a].poz = v[a].poz + ind2;
}
else
{
int a = cb1(ind1, n);
int b = cb2(ind2, n);
int fremax = 0;
for (int j = a; j <= b; j ++)
{
frec[v[j].cul] ++;
if (frec[v[j].cul] > fremax) fremax = frec[v[j].cul];
}
fout << fremax << '\n';
for (int j = 1; j <= 64; j ++)
frec[j] = 0;
}
}
return 0;
}