Cho x = (x1, x2, ..., xn) là một hoán vị của dãy số (1, 2, ..., n).
Dãy t = (t1, t2, ..., tn) được gọi là dãy nghịch thế của dãy hoán vị x nếu nó được xây dựng như sau: ti := số phần tửđứng trước giá trị i mà lớn hơn i trong dãy x. (1 ≤ i ≤ n).
Ví dụ: Với n = 6
• Dãy x = (3, 2, 1, 6, 4, 5) thì dãy nghịch thế của nó là (2, 1, 0, 1, 1, 0)
• Dãy x = (1, 2, 3, 4, 5, 6) thì dãy nghịch thế của nó là (0, 0, 0, 0, 0, 0)
• Dãy x = (6, 5, 4, 3, 2, 1) thì dãy nghịch thế của nó là (5, 4, 3, 2, 1, 0)
Vấn đềđặt ra là cho trước dãy t, hãy cho biết dãy hoán vị x nhận t làm dãy nghịch thế của nó.
Dữ liệu: Vào từ file văn bản RECOVER.INP • Dòng 1: Chứa số nguyên dương n (n ≤ 5000).
• Dòng 2: Chứa các số t1, t2, ..., tn theo đúng thứ tựđó cách nhau ít nhất một dấu cách.
Kết quả: Ghi ra file văn bản RECOVER.OUT
Chỉ gồm một dòng ghi các số x1, x2, ..., xn cách nhau ít nhất một dấu cách theo đúng thứ tựđó. Dữ liệu vào được cho luôn luôn đúng đắn để có thể tìm ra nghiệm
Ví dụ:
RECOVER.INP RECOVER.OUT 6 6
2 1 0 1 1 0
095. MUA HÀNG
Một công ty muốn mua m máy tính. Sau khi lấy thông tin tại n cửa hàng (1 ≤ n ≤ 10000), người ta biết được rằng cửa hàng thứ i có bán ai máy tính và với giá mỗi máy tính là bi. (ai, bi là những số
nguyên dương: ai≤ 100; bi≤ 2000).
Giả sử rằng các cửa hàng có đủ máy để bán cho công ty. Hãy tìm cách mua rẻ nhất.
Dữ liệu: Vào từ file văn bản BUY.INP
• Dòng 1: Chứa hai số m, n cách nhau ít nhất một dấu cách.
• n dòng tiếp theo, dòng thứ i chứa hai số ai, bi cách nhau ít nhất một dấu cách.
Kết quả: Ghi ra file văn bản BUY.OUT • Dòng 1: Ghi tổng số tiền phải trả.
• n dòng tiếp theo, dòng thứ i ghi số máy tính mua ở cửa hàng thứ i.
Ví dụ: BUY.INP BUY.OUT 22 5 3 30 5 10 6 8 10 5 2 20 168 0 5 6 10 1