Cod sursa(job #1709509)

Utilizator UAIC_RIP_Han_SoloUAIC BotoIasiByte UAIC_RIP_Han_Solo Data 28 mai 2016 12:40:47
Problema Pq Scor 0
Compilator cpp Status done
Runda ONIS 2016 - Runda - 2 - ACM ICPC Romanian Programming Contest Marime 1.15 kb
#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,-r-1));
        sol=0;
        if(!(it!=v.end()&&it->X>=l&&-it->Y<=r))
            cout<<-1<<'\n';
        else
        {
            for(i=1; it!=v.end()&&i<=10&&it->X>=l&&-it->Y<=r; i++,it++)
            {
                sol=max(sol,-it->Y-it->X);
            }
            cout<<sol<<'\n';
        }
    }
    return 0;
}