trang chủ / đề bài / thhv19_clc_10_a

Phân đoạn K-good dài nhất

Đề bài

Mô tả

Cho mảng a gồm n số nguyên. Một chuỗi gồm một hoặc nhiều phần tử liên tiếp được gọi là một phân đoạn của mảng a. Ngoài ra, phân đoạn đó được gọi là phân đoạn k-good nếu nó không chứa nhiều hơn k giá trị khác nhau.

Yêu cầu: Tìm phân đoạn k-good dài nhất.

Dữ liệu vào

  • Dòng đầu tiên chứa hai số nguyên n,k (1≤k≤n≤5×105) là số phần tử của mảng a và tham số k.
  • Dòng thứ hai chứa n số nguyên a1,a2,…,an (0≤ai≤106) là các phần tử của mảng a.

Dữ liệu ra

In hai số nguyên l,r (1≤l≤r≤n) là chỉ số đầu và chỉ số cuối của phân đoạn k-good dài nhất. Nếu có nhiều phân đoạn k-good cùng có độ dài lớn nhất, hãy in phân đoạn đầu tiên trong số đó (phân đoạn có l nhỏ nhất).

Ràng buộc

  • 1≤k≤n≤5×105.
  • 0≤ai≤106.

Subtasks

  • 60% số test: n≤100, ai≤1000.
  • 40% số test còn lại: không có ràng buộc gì thêm.

Ví dụ

Input Output Giải thích
5 5
1 2 3 4 5
1 5 Cả mảng có 5 giá trị khác nhau, không quá k=5.
9 3
6 5 1 2 3 2 1 4 5
3 7 Phân đoạn 1,2,3,2,1 có 3 giá trị khác nhau và dài 5; không có phân đoạn 3-good nào dài hơn.
5 1
1 2 3 4 5
1 1 Mọi phân đoạn 1-good dài nhất đều có độ dài 1, in phân đoạn đầu tiên.
6 2
1 2 3 3 4 1
2 4 Hai phân đoạn 2-good dài nhất là [2,4] (2,3,3) và [3,5] (3,3,4), in phân đoạn đầu tiên.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0