Cod sursa(job #2020663)

Utilizator refugiatBoni Daniel Stefan refugiat Data 11 septembrie 2017 13:00:35
Problema Marbles Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include<bits/stdc++.h>
#define x first
#define y second
using namespace std;
ifstream si("marbles.in");
ofstream so("marbles.out");
int v[1<<17],cnt[1<<17][64];
pair<int,int> x[1<<17];
int main()
{
    int n,m;
    si>>n>>m;
    for(int i=1;i<=n;++i)
        si>>x[i].x>>x[i].y;
    sort(x+1,x+n+1);
    for(int i=1;i<=n;++i)
    {
        v[i]=x[i].x;
        cnt[i][x[i].y-1]=1;
    }
    for(int i=1;i<=n;++i)
        for(int j=0;j<64;++j)
            cnt[i][j]+=cnt[i-1][j];
    while(m--)
    {
        int p,x,y;
        si>>p>>x>>y;
        if(!p)
            (*lower_bound(v+1,v+n+1,x))+=y;
        else
        {
            x=(lower_bound(v+1,v+n+1,x)-v)-1;
            y=(upper_bound(v+1,v+n+1,y)-v)-1;
            int r=0;
            for(int i=0;i<64;++i)
                r=max(r,cnt[y][i]-cnt[x][i]);
            so<<r<<'\n';
        }
    }
    return 0;
}