Trung vị của Orac

Đề bài

Mô tả

Cho dãy số nguyên dương a1,a2,…,an.

Trong một thao tác, bạn được chọn một đoạn con [l…r] tùy ý của dãy và thay tất cả các giá trị al,al+1,…,ar bằng trung vị của multiset {al,al+1,…,ar}.

Trong bài này, trung vị của một multiset s được định nghĩa là phần tử nhỏ thứ ⌊(|s|+1)/2⌋ của nó. Ví dụ: trung vị của {1,4,4,6,5} là 4, trung vị của {1,7,5,8} là 5.

Cho số nguyên dương k. Hỏi có thể thực hiện một số thao tác (có thể không thao tác nào) để biến toàn bộ dãy thành a1=a2=…=an=k hay không?

Bạn cần trả lời t truy vấn độc lập.

Dữ liệu vào

  • Dòng đầu chứa số nguyên t: số truy vấn.
  • Mỗi truy vấn gồm hai dòng:
    • Dòng đầu chứa hai số nguyên n và k.
    • Dòng thứ hai chứa n số nguyên dương a1,a2,…,an.

Dữ liệu ra

Với mỗi truy vấn, in ra một dòng: yes nếu có thể biến toàn bộ dãy thành k, ngược lại in no.

Ràng buộc

  • 1≤n≤105
  • 1≤k≤109
  • 1≤ai≤109
  • Tổng n trên tất cả các truy vấn không vượt quá 105.

Ví dụ

Input Output Giải thích
5
5 3
1 5 2 6 1
1 6
6
3 2
1 2 3
4 3
3 1 2 3
10 3
1 2 3 4 5 6 7 8 9 10
no
yes
yes
no
yes
Truy vấn 1: không thể biến mọi phần tử thành 3. Truy vấn 2: dãy đã thỏa mãn sẵn (a1=6). Truy vấn 3: chọn cả dãy, trung vị của {1,2,3} là 2. Truy vấn 4: không thể. Truy vấn 5: chọn đoạn [1,6] rồi chọn đoạn [2,10].
2
1 1
1000000000
3 1000000000
1000000000 996 251
no
no
Truy vấn 1: dãy không chứa k=1 và không có phần tử nào khác nên không thể tạo ra 1. Truy vấn 2: chỉ có một phần tử ≥109, mọi thao tác trên đoạn dài ≥2 đều tạo ra trung vị <109.

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