Cod sursa(job #3216867)

Utilizator AlexSerban21Serban Alexandru AlexSerban21 Data 20 martie 2024 09:54:13
Problema Marbles Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.2 kb
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin ("marbles.in");
ofstream fout ("marbles.out");
struct bila
{
    int x,c;
};
bila v[100001];
bool cmp (const bila &a,const bila &b)
{
    return a.x<b.x;
}
int n,i,j,cmax,poz,poz1,poz2,sol,ch,a,b,t,q,s[100001][65];
int cb (int x)
{
    int st=1,dr=n,mij;
    while (st<=dr)
    {
        mij=(st+dr)/2;
        if (v[mij].x>x)
            dr=mij-1;
        else
            st=mij+1;
    }
    return dr;
}
int main()
{
    fin>>n>>q;
    for (i=1; i<=n; i++)
    {
        fin>>v[i].x>>v[i].c;
        cmax=max (cmax,v[i].c);
    }
    sort (v+1,v+n+1,cmp);
    for (i=1; i<=n; i++)
    {
        for (j=1; j<=cmax; j++)
            s[i][j]=s[i-1][j];
        s[i][v[i].c]++;
    }
    for (t=1; t<=q; t++)
    {
        fin>>ch>>a>>b;
        if (ch==0)
        {
            poz=cb (a);
            v[poz].x+=b;
        }
        else
        {
            poz1=cb (a-1);
            poz2=cb (b);
            poz1++;
            sol=0;
            for (j=1; j<=cmax; j++)
                sol=max (sol,s[poz2][j]-s[poz1-1][j]);
            fout<<sol<<"\n";
        }
    }
    return 0;
}