Điều hướng chính

Ngôn ngữ

Phím tắt

/
Chuyển đến ô tìm bài
g p
Đi đến bài tập
g c
Đi đến kỳ thi
g u
Đi đến người dùng
?
Mở trợ giúp phím tắt

Bài tập

Bài được chọn theo nhịp luyện tập của bạn, cùng mọi bài mới vừa lên.

root

Bất động sản

100 điểm

Để mở rộng quy mô hoạt động, CLB CHTcoder vừa nhận được tài trợ xây dựng một khu trụ sở mới
gồm \(n\) tòa nhà cao tầng nằm thẳng hàng nhau. Hiện tại, mỗi tòa nhà có chiều cao là \(h_i\). Ban chủ nhiệm
CLB muốn sắp xếp lại các tòa nhà sao cho chiều cao của chúng tạo thành một dãy tăng dần từ trái
sang phải để tạo nên một "đường chân trời" đẹp mắt, biểu tượng cho sự thăng tiến không ngừng của các
thành viên.

Tuy nhiên, do hạn chế về kỹ thuật thi công, đội xây dựng chỉ có thể thực hiện thao tác: Hoán đổi
vị trí của hai tòa nhà nằm kề nhau.

Mỗi lần hoán đổi tốn rất nhiều chi phí, vì vậy Ban chủ nhiệm cần bạn tính toán số lần hoán đổi tối
thiểu cần thiết để sắp xếp toàn bộ dãy tòa nhà theo thứ tự tăng dần.

Input

Ghi vào file văn bản BDS.INP:

  • Dòng 1: số tòa nhà \(n\) (\(1 \le n \le 10^6\)).
  • Dòng 2: \(n\) số \(h_1, h_2, \ldots, h_n\) (\(1 \le h_i \le 10^9\)).

Output

Ghi ra file văn bản BDS.OUT:

  • In ra một dòng duy nhất chứa số lượng hoán đổi liền kề tối thiểu cần thiết.

Example

Test 1

Input
5
2 3 8 6 1
Output
5

Scoring

  • 60% số điểm của bài toán thỏa mãn: \(n \le 1000\).
  • 40% số điểm còn lại không còn ràng buộc gì thêm.

root

Cuốn sách phép thuật

100 điểm

Harry đã biết về một cuốn sách dạy phép thuật được cha mẹ mình giấu trong một khu đầm lầy.

Khu đầm lầy này có \(N\) khu dân cư được đánh số thứ tự từ \(1\) đến \(N\) và được nối với nhau bởi \(N-1\) con đường, trong đó mọi cặp khu dân cư đều có đường đi đến nhau. Khoảng cách giữa \(2\) khu định cư \((x, y)\) được hiểu là số lượng con đường đi qua để đi từ \(x\) đến \(y\).

Harry biết rằng cuốn sách được giấu tại một khu dân cư nào đó, và nó có một sức mạnh quyền năng sẽ làm ảnh hưởng xấu tới những khu dân cư khác (làm cho khu các dân cư này xuất hiện bóng ma hoặc người sói) cách khu dân cư chứa cuốn sách trong vòng bán kính có khoảng cách là \(d\). Harry có trong tay một danh sách \(M\) khu dân cư bị ảnh hưởng bởi cuốn sách, đó là các khu dân cư \(p_{1}, p_{2},..., p_{M}\).

Yêu cầu: Hãy giúp Harry xác định xem có bao nhiêu khu dân cư có thể chứa cuốn sách mà anh cần tìm

Input

Dòng đầu tiên chứa \(3\) số nguyên \(N\), \(M\) và \(d\) \((1 < M <= N <= 10^5)\)
; \(0 <= d <= N-1\);

Dòng thứ hai chứa \(M\) số nguyên \(p_{1}, p_{2},..., p_{M}\) \((1 <= p_{i} <= N)\);

\(N-1\) dòng tiếp theo, mỗi dòng chứa cặp \(x, y\) thể hiện một con đường nối trực tiếp từ \(x\) đến \(y\)

Output

Đưa ra số lượng khu dân cư có thể chứa cuốn sách phép thuật, nếu như không có thì đưa ra số \(0\).

Example

Test 1

Input
6 2 3
1 2
1 5
2 3
3 4
4 5
5 6
Output
3
Note

\begincenter

\endcenter

Scoring

Có \(25\%\) số test tương ứng \(25\%\) số điểm có \(N <= 50\)

Có \(25\%\) số test khác tương ứng \(25\%\) số điểm có \(50 < N <= 100\)

Có \(25\%\) số test khác tương ứng \(25\%\) số điểm có \(100 < N < 5.10^4\)

\(25\%\) số test còn lại tương ứng \(25\%\) số điểm có \(5.10^4 < N <= 10^5\)

root

Kết nối thành phố

100 điểm

Cho một đồ thị \(n\) đỉnh ban đầu không có cạnh. Có \(q\) truy vấn, mỗi truy vấn thuộc một trong hai loại sau:

  • \(1 \; u \; v\) --- thêm một cạnh nối giữa đỉnh \(u\) và \(v\).
  • \(2 \; u \; v\) --- kiểm tra xem \(u\) và \(v\) có được kết nối (trực tiếp hoặc gián tiếp) với nhau không.

Bạn hãy trả lời tất cả các truy vấn loại 2.

\InputFile

  • Dòng đầu tiên chứa hai số nguyên \(n, q\) (\(1 \leq n, q \leq 10^5\)) --- số đỉnh và số truy vấn.
  • Mỗi dòng trong \(q\) dòng tiếp theo chứa ba số nguyên \(t, u, v\) (\(1 \leq u, v \leq n\)) --- một truy vấn như mô tả.

\OutputFile

Với mỗi truy vấn loại 2, in ra một dòng YES nếu \(u\) và \(v\) được kết nối với nhau, ngược lại in ra NO.

\Examples

\beginexample
\exmp
6 5
1 1 2
1 1 3
2 2 3
1 5 6
2 4 5

YES
NO

\endexample

\Note

  • Truy vấn thứ 3: các đỉnh \(2\) và \(3\) cùng thuộc thành phần liên thông với đỉnh \(1\) nên được kết nối.
  • Truy vấn thứ 5: đỉnh \(4\) đứng riêng, không kết nối với ai.

\Scoring

  • Subtask 1 (40 điểm): \(n, q \leq 1000\)
  • Subtask 2 (60 điểm): Không có ràng buộc gì thêm.

\endproblem

root

Subset

100 điểm

Bạn được cho một dãy số nguyên, ban đầu dãy này rỗng. Lần lượt thực hiện \(Q\) truy vấn thuộc một trong ba dạng:

  • add \(x\): Thêm một phần tử với giá trị \(x\) vào dãy (Có thể tồn tại nhiều phần tử cùng giá trị

  • del \(x\): Xóa bỏ khỏi dãy một phần tử với giá trị \(x\)

  • cnt \(x\): Đếm xem trong dãy tồn tại bao nhiêu số \(y\) mà \(x\) & \(y\) = \(y\), trong đó & là phép AND bit

Yêu cầu: Với mỗi truy vấn loại cnt, bạn hãy in ra kết quả tương ứng

Input

Dòng đầu tiên chứa số nguyên dương \(Q\) \((Q \leq 2 \times 10^5)\) là số truy vấn.

\(Q\)dòng tiếp, mỗi dòng mô tả một truy vấn, \(x \leq 2^{16}\) trong mọi truy vấn.

Output

In ra nhiều dòng, mỗi dòng là kết quả cho truy vấn loại cnt tương ứng trong bộ dữ liệu

Example

Test 1

Input
7
add 11
cnt 15
add 4
add 0
cnt 6
del 4
cnt 15
Output
1
2
2

Scoring

Đảm bảo với mọi test, khi thực hiện thao tác del \(x\), \(x\) đã xuất hiện trong dãy.

\(30\%\) số test có \(Q \leq 1000\).

\(30\%\) số test có \(x \leq 2^8\).

\(40\%\) số test còn lại không có ràng buộc gì thêm.

Xem thêm