Cod sursa(job #1709641)

Utilizator UPT_SyntaxErrorUPT SyntaxError UPT_SyntaxError Data 28 mai 2016 13:12:46
Problema Pq Scor 0
Compilator c Status done
Runda ONIS 2016 - Runda - 2 - ACM ICPC Romanian Programming Contest Marime 1.18 kb
#include <stdio.h>
#include <stdlib.h>

int n, q, i,x, nr,j,k, l,r,m;
int *v[100000];
int a[100000];

int main()
{
    freopen("pq.in", "r", stdin);
    freopen("pq.out", "w", stdout);

    scanf("%d %d", &n, &q);

    for(i = 0; i<n; i++)
    {
        scanf("%d", &x);

        if(a[x]==0)
        {
            nr++;
            v[nr] = (int*)(malloc(sizeof(int)*500));
            v[nr][0] = 1;
            v[nr][1] = i+1;
            a[x] = nr;
        }
        else
        {
            //v[a[x]] = realloc(v[a[x]], sizeof(int)*(v[a[x]][0]+3));
            v[a[x]][0]++;
            v[a[x]][v[a[x]][0]] = i+1;
        }


    }

    for(k=0; k<q; k++)
    {
        scanf("%d %d", &l, &r);
        m = -1;

        for(i=1; i<=nr; i++)
        {
            for(j=1; j<=v[i][0]; j++)
            {

                if(v[i][j]<l) continue;

                if(j<v[i][0] && v[i][j+1]<=r && v[i][j+1]-v[i][j]>m)
                    m = v[i][j+1]-v[i][j];
            }

            if(m==r-l) break;
        }

        printf("%d\n", m);

    }


    //afis
    /*for(i=1; i<=nr; i++)
    {
        for(j=1; j<=v[i][0]; j++)
            printf("%d ",v[i][j]);
        printf("\n");
    }*/

    return 0;
}