Cod sursa(job #1710090)

Utilizator vand_bot_la_PAUPB Mardale Mocanu Vasilache vand_bot_la_PA Data 28 mai 2016 14:59:16
Problema Pq Scor 0
Compilator cpp Status done
Runda ONIS 2016 - Runda - 2 - ACM ICPC Romanian Programming Contest Marime 0.82 kb
#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;
}