Cod sursa(job #1386074)

Utilizator badea_adi1999Badea Adrian Catalin badea_adi1999 Data 12 martie 2015 17:54:49
Problema Marbles Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <fstream>
#define nmax 100005
#define kmax 65
using namespace std;
ifstream f("marbles.in");
ofstream g("marbles.out");
int n,m,v[kmax][nmax];
int a[nmax],k[nmax];


int cautbin(int x)
{
    int p=0;
    for (int i=1<<16;i;i>>=1)
        if (i+p<=n&&x>=a[p+i])
            p+=i;
    return p;

}



int main()
{
    int i,j,op,p,q,t;
    int x,y,sol;
    f>>n>>m;
    for (i=1;i<=n+1;i++) {
        if (i<=n)
            f>>a[i]>>k[i];
        for (j=1;j<kmax;j++)
            v[i][j]=v[i-1][j];
        v[i][k[i]]++;
    }

    for (i=1;i<=m;i++) {
        f>>op>>p>>q;
        if (op==0) {
            t=cautbin(p);
            a[t]+=q;
            continue;
        }
        x=cautbin(p);
        if (a[x]==p)
            x--;
        y=cautbin(q);

        sol=0;
        for (j=1;j<=64;j++)
            sol=max(sol,v[y][j]-v[x][j]);
        g<<sol<<'\n';
    }
    return 0;
}