Cod sursa(job #3277030)

Utilizator robert_dumitruDumitru Robert Ionut robert_dumitru Data 15 februarie 2025 11:28:18
Problema Marbles Scor 100
Compilator cpp-64 Status done
Runda vs11_12_vine_oji_2025 Marime 1.25 kb
#include <bits/stdc++.h>
#define MOD 20173333
using namespace std;

ifstream fin("marbles.in");
ofstream fout("marbles.out");

int n, m;
int a[100005][70];
pair<int, int> v[100005];

int CautBin(int x)
{
    int st, dr, mij, P;
    st = 1; dr = n;
    while (st <= dr)
    {
        mij = (st + dr) / 2;
        if (v[mij].first <= x)
        {
            P = mij;
            st = mij + 1;
        }
        else dr = mij - 1;
    }
    return P;
}

int main()
{
    int t, i, j, P, P1, sol;
    fin >> n >> m;
    for (int p = 1; p <= n; p++)
    {
        fin >> v[p].first >> v[p].second;
        //a[v[p].first][v[p].second] = 1;
    }
    sort(v + 1, v + n + 1);
    for (i = 1; i <= n; i++)
    {
        for (j = 1; j <= 64; j++)
            a[i][j] = a[i - 1][j];
        a[i][v[i].second]++;
    }
    while (m--)
    {
        fin >> t >> i >> j;
        if (t == 0)
        {
            P = CautBin(i);
            v[P].first += j;
        }
        else
        {
            P = CautBin(i - 1);
            P1 =  CautBin(j);
            sol = 0;
            for (int p = 1; p <= 64; p++)
                sol = max(sol, a[P1][p] - a[P][p]);
            fout << sol << "\n";
        }
    }
    return 0;
}