Cod sursa(job #3172979)

Utilizator anast56Anastasia Rosan anast56 Data 21 noiembrie 2023 17:38:35
Problema Marbles Scor 100
Compilator cpp-32 Status done
Runda Arhiva de probleme Marime 1.57 kb
#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;
}