CF522D Closest Equals

题目描述

给定一个序列 $a_{1},a_{2},...,a_{n}$ 和 $m$ 个询问 $l_{j},r_{j}$($1\le l_{j}\le r_{j}\le n$)。对于每个询问,请输出区间 $[l_{j}, r_{j}]$ 内,值相等且下标不同的两个元素 $a_{x}$ 和 $a_{y}$ 之间的最小距离(即 $|x-y|$),其中: - 元素的下标均在区间内,即 $l_{j}\le x, y\le r_{j}$; - 元素的数值相等,即 $a_{x}=a_{y}$。 如果在该区间内没有这样的元素对,请输出 $-1$ 作为该询问的答案。

输入格式

第一行包含两个整数 $n$ 和 $m$($1\le n,m\le 5\cdot 10^{5}$),分别表示序列的长度和询问的数量。 第二行包含 $n$ 个整数,构成序列 $a_{1},a_{2},...,a_{n}$($-10^{9}\le a_{i}\le 10^{9}$)。 接下来的 $m$ 行,每行两个整数 $l_{j}, r_{j}$($1\le l_{j}\le r_{j}\le n$),表示一个询问的区间。

输出格式

输出 $m$ 个整数,对于每个询问输出一个答案。如果该区间不存在满足条件的元素对,输出 $-1$。

说明/提示

由 ChatGPT 5 翻译