Pagini recente » Cod sursa (job #1957932) | Cod sursa (job #1015285) | Cod sursa (job #574912) | Cod sursa (job #3207633) | Cod sursa (job #1709641)
#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;
}