Cod sursa(job #3343633)

Utilizator McMeatGhenea Radu Stefan McMeat Data 27 februarie 2026 21:51:08
Problema Marbles Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.42 kb
#include <fstream>
#include <algorithm>
#include <iostream>
#include <vector>
#include <set>
#include <unordered_map>
using namespace std;
#define STDIN 0
#if STDIN
    #define fein cin
    #define fout cout
#else
    ifstream fein("marbles.in");
    ofstream fout("marbles.out");
#endif

const int NMAX=1501;
const int PRIMEMAX=1e9+1;
const double INF = 1e9+1;
const int MOD = 104659;
const double EPS=1e-5;

int n, m;
set<int> balls[65];
unordered_map<int, int> pos_to_color;

int querry(int l, int r) {
    int res=0;
    for(int i=1;i<=64;i++) {
        res=max(res, (int)distance(
            lower_bound(balls[i].begin(), balls[i].end(), l),
            upper_bound(balls[i].begin(), balls[i].end(), r)
        ));
    }
    return res;
}

void move(int x, int delta) {
    int cl=pos_to_color[x];
    if(balls[cl].find(x)!=balls[cl].end()) {
        balls[cl].erase(x);
        balls[cl].insert(x+delta);
    }
    if(pos_to_color.find(x)!=pos_to_color.end()) {
        pos_to_color.erase(x);
    }
    pos_to_color[x+delta]=cl;
}

void solve() {
    for(int i=1;i<=m;i++) {
        int c, x, y; fein>>c>>x>>y;
        if(c==0) {
            move(x, y);
        }
        else {
            fout<<querry(x, y)<<'\n';
        }
    }
}

void read_data() {
    fein>>n>>m;
    for(int i=1;i<=n;i++) {
        int a, b; fein>>a>>b;
        balls[b].insert(a);
        pos_to_color[a]=b;
    }
}

int main()
{
    read_data();
    solve();
    return 0;
}