CF551E.GukiZ and GukiZiana

省选/NOI-

通过率:0%

时间限制:10.00s

内存限制:256MB

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

Professor GukiZ was playing with arrays again and accidentally discovered new function, which he called GukiZiana. For given array a, indexed with integers from 1 to n, and number y, GukiZiana(a, y) represents maximum value of j - i, such that a__j = a__i = y. If there is no y as an element in a, then GukiZiana(a, y) is equal to  - 1. GukiZ also prepared a problem for you. This time, you have two types of queries:

  1. First type has form 1 l r x and asks you to increase values of all a__i such that l ≤ i ≤ r by the non-negative integer x.
  2. Second type has form 2 y and asks you to find value of GukiZiana(a, y).

For each query of type 2, print the answer and make GukiZ happy!

古基兹教授(Professor GukiZ)再次摆弄数组时,偶然发现了一个新函数,他将其命名为 GukiZiana。对于给定的数组 aa(下标从 11 到 nn)以及一个数 yy,定义

GukiZiana(a, y)=max⁡{j−i∣aj=ai=y}\text{GukiZiana}(a,\, y) = \max\{j - i \mid a_j = a_i = y\}

即:在所有满足 ai=aj=ya_i = a_j = y 且 i≤ji \le j 的下标对 (i,j)(i, j) 中,取 j−ij - i 的最大值。若 yy 不在数组 aa 中出现,则 GukiZiana(a, y)=−1\text{GukiZiana}(a,\, y) = -1。

古基兹还为你准备了一个问题。这一次,你将面对两种类型的查询:

  1. 第一种查询形如 1 l r x,表示将所有满足 l≤i≤rl \le i \le r 的 aia_i 增加一个非负整数 xx;
  2. 第二种查询形如 2 y,要求你计算 GukiZiana(a, y)\text{GukiZiana}(a,\, y) 的值。

对每个类型为 2 的查询,请输出对应答案,让古基兹开心起来!

输入格式

The first line contains two integers n, q (1 ≤ n ≤ 5 * 105, 1 ≤ q ≤ 5 * 104), size of array a, and the number of queries.

The second line contains n integers _a_1, _a_2, ... a__n (1 ≤ a__i ≤ 109), forming an array a.

Each of next q lines contain either four or two numbers, as described in statement:

If line starts with 1, then the query looks like 1 l r x (1 ≤ l ≤ r ≤ n, 0 ≤ x ≤ 109), first type query.

If line starts with 2, then th query looks like 2 y (1 ≤ y ≤ 109), second type query.

第一行包含两个整数 nn、qq(1≤n≤5×1051 \leq n \leq 5 \times 10^5,1≤q≤5×1041 \leq q \leq 5 \times 10^4),分别表示数组 aa 的大小以及查询次数。

第二行包含 nn 个整数 a1, a2, …, ana_1,\,a_2,\,\dots,\,a_n(1≤ai≤1091 \leq a_i \leq 10^9),构成数组 aa。

接下来的 qq 行每行包含四个或两个数字,具体格式如下(如题面所述):

  • 若某行以 1 开头,则该查询形如 1 l r x(1≤l≤r≤n1 \leq l \leq r \leq n,0≤x≤1090 \leq x \leq 10^9),为第一类查询;
  • 若某行以 2 开头,则该查询形如 2 y(1≤y≤1091 \leq y \leq 10^9),为第二类查询。

输出格式

For each query of type 2, print the value of GukiZiana(a, y), for y value for that query.

对于每个类型为 2 的查询,请输出该查询中对应 $ y $ 值的 GukiZiana($ a , ,  y $) 的值。

输入输出样例

  • 输入#1

    4 3
    1 2 3 4
    1 1 2 1
    1 1 1 1
    2 3

    输出#1

    2
  • 输入#2

    2 3
    1 2
    1 2 2 1
    2 3
    2 4

    输出#2

    0
    -1

输入解题思路,AI测评打分。不知道怎么写?

首页