Pagini recente » Cod sursa (job #2679557) | Cod sursa (job #3267201) | Cod sursa (job #3243854) | Cod sursa (job #2083061) | Cod sursa (job #3283381)
#include <fstream>
#include <map>
using namespace std;
ifstream f("marbles.in");
ofstream g("marbles.out");
int n, m, x, v, y, aib[65][200005];
map <int, int> culori;
inline int zeros(int i)
{
return i & -i;
}
inline void update(int culoare, int poz, int val)
{
for ( ; poz <= 200005; poz += zeros(poz)) {
aib[culoare][poz] += val;
}
}
inline int query(int culoare, int poz)
{
int sum = 0;
for ( ; poz; poz -= zeros(poz)) {
sum += aib[culoare][poz];
}
return sum;
}
int main()
{
f >> n >> m;
for (int i = 1; i <= n; ++i) {
int a, b;
f >> a >> b;
culori[a] = b;
update(b, a, 1);
}
for (int i = 1; i <= m; ++i) {
f >> v >> x >> y;
if (v == 0) {
int culoareVeche = culori[x];
culori.erase(x);
culori[x + y] = culoareVeche;
update(culoareVeche, x, -1);
update(culoareVeche, x + y, 1);
}
else {
int ans = 0;
for (int j = 1; j <= 64; ++j) {
int aux1 = query(j, y) - query(j, x - 1);
ans = max(ans, aux1);
}
g << ans << '\n';
}
}
return 0;
}