Pagini recente » Cod sursa (job #2442869) | Cod sursa (job #2497192) | Cod sursa (job #903896) | Cod sursa (job #3122390) | Cod sursa (job #1710090)
#include <stdio.h>
#include <vector>
#define MAX 100005
#define pii pair<int, int>
#define mk make_pair
#define prev first
#define next second
using namespace std;
int n, q, a[MAX], L, R, h[MAX];
pii p[MAX];
vector<int> l[MAX];
int main(){
freopen("pq.in", "r", stdin);
freopen("pq.out", "w", stdout);
scanf("%d%d", &n, &q);
for(int i = 1; i <= n; ++i){
scanf("%d", &a[i]);
if(h[a[i]]){
p[i].prev = h[a[i]];
p[h[a[i]]].next = i;
}
h[a[i]] = i;
}
for(int i = 1; i < n; ++i)
l[p[i].next - i].push_back(i);
for(int i = 0; i < q; ++i){
scanf("%d%d", &L, &R);
int res = -1;
bool ok = 0;
for(int i = R - L; i > 0; --i){
for(int j = 0; j < l[i].size(); ++j)
if(l[i][j] >= L && p[l[i][j]].next <= R){
res = i;
ok = 1;
break;
}
if(ok)
break;
}
printf("%d\n", res);
}
return 0;
}