Cod sursa(job #1709912)

Utilizator UPTReturnUPT Return UPTReturn Data 28 mai 2016 14:24:37
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>

FILE *f,*g;
int a[100001], costuri[100001];
int l,r,q,n;


void citireVector(int n) {
    int i;
    for(i = 0; i < n; i++){
        fscanf(f, "%d", &a[i]);
        costuri[i]=0;
    }


}

void vectorDeCosturi(int n) {
    int i,j;

    for(i=0;i<n-1;i++) {
        j=i+1;
        while(j<n) {
            if(a[i]==a[j]) {
                costuri[i]=j-i;
                break;
            }
            j++;
        }
    }
}

int main()
{

    int t, n, m, k, i, j, x =1;
    f = fopen("pq.in", "r");
    g = fopen("pq.out", "w");

    if(!f || !g)
    {
        printf("\nNu merg fisierele");
        return -1;
    }

    fscanf(f,"%d %d",&n, &q);

    citireVector(n);
    vectorDeCosturi(n);

    for(j = 0; j < q; j++) {
        fscanf(f,"%d %d",&l,&r);
        l--;
        r--;
        int maxim = 0;
        for(i = l; i<=r&&maxim<=r-i; i++)
        {
            if(costuri[i]>0&&costuri[i]<=(r-i)&&costuri[i]>maxim)
                maxim=costuri[i];
        }
        if(maxim==0)
            fprintf(g,"-1\n");
        else
            fprintf(g,"%d\n",maxim);
    }



    return 0;
}