CF616D.Longest k-Good Segment

普及/提高-

通过率:0%

时间限制:1.00s

内存限制:256MB

AC君温馨提醒

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

题目描述

The array a with n integers is given. Let's call the sequence of one or more consecutive elements in a segment. Also let's call the segment k-good if it contains no more than k different values.

Find any longest k-good segment.

As the input/output can reach huge size it is recommended to use fast input/output methods: for example, prefer to use scanf/printf instead of cin/cout in C++, prefer to use BufferedReader/PrintWriter instead of Scanner/System.out in Java.

给定一个包含 nn 个整数的数组 aa。我们称数组 aa 中一个或多个连续元素所构成的序列为段(segment)。若某一段中不同数值的个数不超过 kk,则称该段为 kk-好段(kk-good segment)。

请找出任意一个最长的 kk-好段。

由于输入/输出规模可能非常大,建议使用快速输入/输出方法:例如,在 C++ 中优先使用 scanf/printf 而非 cin/cout;在 Java 中优先使用 BufferedReader/PrintWriter 而非 Scanner/System.out。

输入格式

The first line contains two integers n, k (1 ≤ k ≤ n ≤ 5·105) — the number of elements in a and the parameter k.

The second line contains n integers a__i (0 ≤ a__i ≤ 106) — the elements of the array a.

第一行包含两个整数 nn 和 kk(1 ≤ k ≤ n ≤ 5⋅1051 \le k \le n \le 5\cdot10^5)—— 分别表示数组 aa 的元素个数和参数 kk。

第二行包含 nn 个整数 aia_i(0 ≤ ai ≤ 1060 \le a_i \le 10^6)—— 数组 aa 的元素。

输出格式

Print two integers l, r (1 ≤ l ≤ r ≤ n) — the index of the left and the index of the right ends of some k-good longest segment. If there are several longest segments you can print any of them. The elements in a are numbered from 1 to n from left to right.

输出两个整数 ll 和 rr(1≤l≤r≤n1 \leq l \leq r \leq n)——即某个长度最长的 kk-good 区间的左端点和右端点的下标。若存在多个最长的区间,可任选其一输出。数组 aa 中的元素从左到右编号为 11 到 nn。

输入输出样例

  • 输入#1

    5 5
    1 2 3 4 5

    输出#1

    1 5
  • 输入#2

    9 3
    6 5 1 2 3 2 1 4 5

    输出#2

    3 7
  • 输入#3

    3 1
    1 2 3

    输出#3

    1 1

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

首页