Cod sursa(job #1412994)

Utilizator vladdy47Bucur Vlad Andrei vladdy47 Data 1 aprilie 2015 18:00:28
Problema Marbles Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.38 kb
# include <cstdio>
# include <algorithm>
# define MAX 100005

using namespace std;

int N, M, i, coord, cul, a[MAX], ap[65], OP, I, J, poz, Max, nr, b[MAX];

void clean ()
{
    int i;
    Max = 0;
    for (i = 1; i <= 65; i++)
        ap[i] = 0;
}

int main ()

{
    freopen("marbles.in","r",stdin);
    freopen("marbles.out","w",stdout);

    scanf("%d %d\n",&N,&M);

    for (i = 1; i <= N; i++)
    {
        scanf("%d %d\n", &coord, &cul);
        if (coord < 0) b[abs(coord)] = cul;
        a[coord] = cul;
    }

    for (i = 1 ; i <= M; i++)
    {
        scanf("%d %d %d\n", &OP, &I, &J);
        if (OP == 0)
        {
            poz = I + J;
            if (poz < 0) swap(b[poz],a[I]);
            else
                swap(a[poz],a[I]);
        }
        if (OP == 1)
        {
            clean();

            for (int k = I; k <= J; k++)
            {
                if (k < 0)
                {
                    if (b[k] != 0)
                    {
                        ap[b[k]]++;
                        if (ap[b[k]] > Max) Max = ap[b[k]];
                    }
                }
                if (a[k] != 0)
                {
                    ap[a[k]]++;
                    if (ap[a[k]] > Max) Max = ap[a[k]];

                }
            }

            printf("%d\n",Max);
        }

    }


    return 0;
}