You are on page 1of 5

XẾP HÀNG

Trong giờ học đội ngũ, có 𝑛 người xếp hàng dọc đánh số từ 1 tới 𝑛, người thứ 𝑖 có chiều
cao là ℎ𝑖 . Người có chỉ số nhỏ hơn đứng trước.
Sau khi xếp hàng, có một số người phàn nàn rằng anh ta bị người khác chắn tầm mắt. Cụ
thể là người 𝑖 bị người 𝑗 chắn tầm mắt nếu:
Người 𝑗 đứng trước người 𝑖 (𝑗 < 𝑖)
Người 𝑗 cao hơn người 𝑖 (ℎ𝑗 > ℎ𝑖 )
Người 𝑗 đứng gần người 𝑖 nhất (𝑗 lớn nhất có thể)
Yêu cầu: Với mỗi người, cho biết anh ta bị người nào chắn tầm mắt.
Dữ liệu: Vào từ file văn bản LINEUP.INP
Dòng 1 chứa số nguyên dương 𝑛 ≤ 105
Dòng 2 chứa 𝑛 số nguyên dương ℎ1 , ℎ2 , … , ℎ𝑛 cách nhau bởi dấu cách (∀𝑖: ℎ𝑖 ≤ 109 )
Kết quả: Ghi ra file văn bản LINEUP.OUT 𝑛 số 𝑘1 , 𝑘2 , … , 𝑘𝑛 cách nhau bởi dấu cách. Trong
đó 𝑘𝑖 là số hiệu người chắn tầm mắt của người 𝑖. Nếu người 𝑖 không bị ai chắn tầm mắt,
thì quy ước 𝑘𝑖 = 0
Ví dụ

Trang 1
DÃY NGOẶC
Một dãy dấu ngoặc hợp lệ là một dãy các ký tự "(" và ")" được định nghĩa như sau:
⚫ Dãy rỗng là một dãy dấu ngoặc hợp lệ độ sâu 0
⚫ Nếu 𝐴 là dãy dấu ngoặc hợp lệ độ sâu 𝑘 thì (𝐴) là dãy dấu ngoặc hợp lệ độ sâu 𝑘 + 1
⚫ Nếu 𝐴 và 𝐵 là hai dãy dấu ngoặc hợp lệ với độ sâu lần lượt là 𝑎 và 𝑏 thì 𝐴𝐵 (xâu tạo
thành bằng cách ghép xâu 𝐴 với xâu 𝐵) là dãy dấu ngoặc hợp lệ độ sâu là max(𝑎, 𝑏)
Độ dài của một dãy ngoặc là tổng số ký tự "(" và ")"
Ví dụ: Có 5 dãy dấu ngoặc hợp lệ độ dài 8 và độ sâu 3:

((( )( )))

((( ))( ))

((( ))) ( )

(( )(( )))

( ) ((( )))

Bài toán đặt ra là khi cho biết trước hai số nguyên dương 𝑛 và 𝑘. Hãy cho biết có bao nhiêu
dãy ngoặc hợp lệ có độ dài là 𝑛 và độ sâu là 𝑘.
Dữ liệu: Vào từ file văn bản BRACKETS.INP gồm 1 dòng ghi hai số nguyên dương 𝑛, 𝑘 ≤
1000 cách nhau một dấu cách.
Kết quả: Ghi ra file văn bản BRACKETS.OUT số dư của kết quả tìm được khi chia cho
123456789
Ví dụ:

Trang 2
RANGE MINIMUM QUERY
Cho dãy số nguyên 𝐴 = (𝑎1 , 𝑎2 , … , 𝑎𝑛 ) và 𝑚 truy vấn. Mỗi truy vấn được cho bởi cặp chỉ
số (𝑖, 𝑗) (𝑖 ≤ 𝑗) và yêu cầu cho biết giá trị nhỏ nhất trong số các phần tử liên tiếp từ 𝑎𝑖 tới
𝑎𝑗 .
Hãy trả lời tất cả các truy vấn.
Dữ liệu: Vào từ file văn bản RMQ.INP
Dòng 1 chứa số nguyên dương 𝑛 ≤ 104
Dòng 2 chứa 𝑛 số nguyên 𝑎1 , 𝑎2 , … , 𝑎𝑛 (∀𝑘: |𝑎𝑘 | ≤ 109 )
Dòng 3 chứa số nguyên dương 𝑚 ≤ 106
𝑚 dòng tiếp theo, mỗi dòng chứa hai chỉ số 𝑖, 𝑗 ứng với một truy vấn
Kết quả: Ghi ra file văn bản RMQ.OUT 𝑚 dòng, mỗi dòng ghi câu trả lời cho một truy vấn
theo đúng thứ tự từ truy vấn đầu tiên đến truy vấn cuối cùng
Ví dụ

Trang 3
KÉO CO
Cho 𝑛 người đánh số từ 1 đến 𝑛, người thứ 𝑖 có trọng lượng 𝑎𝑖
Giả thiết 𝑛 ≤ 100 và 0 ≤ 𝑎𝑖 ≤ 10000 (∀𝑖: 1 ≤ 𝑖 ≤ 𝑛)
Yêu cầu: Chia 𝑛 người đã cho làm hai nhóm chơi kéo co sao cho độ chênh lệch trọng lượng
giữa hai nhóm chênh lệch nhau ít nhất, nếu có nhiều cách chia thì chỉ cần chỉ ra một cách.
Dữ liệu: Vào từ file văn bản TUGOFWAR.INP. Trong đó:
⚫ Dòng đầu tiên chứa số 𝑛
⚫ 𝑛 dòng tiếp theo, dòng thứ 𝑖 ghi số 𝑎𝑖
Kết quả: Ghi ra file văn bản TUGOFWAR.OUT. Trong đó:
⚫ Dòng đầu tiên ghi hai số 𝑐1 và 𝑐2 cách nhau ít nhất một dấu cách, 𝑐1 là số người nhóm
I, 𝑐2 là số người nhóm II.
⚫ Dòng 2 ghi chỉ số những người được chọn vào nhóm I
⚫ Dòng 3 ghi chỉ số những người được chọn vào nhóm II
Ví dụ:

Trang 4
GIÁ TRỊ LỚN NHẤT
Một số nguyên dương 𝑥 gọi là con của số nguyên dương 𝑦 nếu ta có thể xoá bớt một số
chữ số của 𝑦 để được 𝑥.
Cho hai số nguyên dương 𝑎 và 𝑏 hãy tìm số 𝑐 là con của cả 𝑎 và 𝑏 sao cho giá trị của 𝑐 là
lớn nhất có thể.
Ràng buộc: 1 ≤ 𝑎, 𝑏 ≤ 103000 . Dữ liệu vào đảm bảo 𝑎, 𝑏 có chung ít nhất 1 chữ số
Dữ liệu: Vào từ file văn bản NUMBER.INP
⚫ Dòng thứ nhất chứa số 𝑎
⚫ Dòng thứ hai chứa số 𝑏
Kết quả: Ghi ra file văn bản NUMBER.OUT số 𝑐 trên một dòng
Ví dụ:

Trang 5

You might also like