Pagini recente » Cod sursa (job #2115223) | Cod sursa (job #1092571) | Cod sursa (job #1047680) | Cod sursa (job #1830090) | Cod sursa (job #1709734)
#include <bits/stdc++.h>
#include <algorithm>
#define pb push_back
#define mp make_pair
#define mt make_tuple
#define ll long long
#define pii pair<int,int>
#define tii tuple <int,int,int>
#define N 1000005
#define mod 2000003
#define X first
#define Y second
#define eps 0.0000000001
#define all(x) x.begin(),x.end()
#define tot(x) x+1,x+n+1
using namespace std;
vector<pii>v;
vector<pii>::iterator it;
unordered_map<int,int>M;
int q,x,i,l,r,n,sol;
int main()
{
freopen("pq.in","r",stdin);
freopen("pq.out","w",stdout);
scanf("%d%d",&n,&q);
for(i=1; i<=n; i++)
{
scanf("%d",&x);
if(M[x])
v.pb(mp(M[x],-i));
M[x]=i;
}
sort(all(v));
for(; q; q--)
{
scanf("%d%d",&l,&r);
it=upper_bound(all(v),mp(l,-n-1));
sol=0;
if(!(it!=v.end()))
cout<<-1<<'\n';
else
{
for(; it!=v.end()&&it->X<=r; it++)
{
if(-it->Y<=r)
sol=max(sol,-it->Y-it->X);
}
if(sol==0)
sol=-1;
cout<<sol<<'\n';
}
}
return 0;
}