Nộp bài
Điểm:
1500 (thành phần)
Thời gian:
1.0s
Bộ nhớ:
128M
Input:
RECOVER.inp
Output:
RECOVER.out
Tác giả:
Dạng bài
Từ một tập S gồm n số ban đầu, máy tính sẽ tạo ra 2^n - 1 số nguyên dương bằng cách tính tổng tất cả các tập con khác rỗng của tập S. Ví dụ như với tập S = {1, 2, 3}, máy tính sẽ tạo ra các số:
- 3 = 1 + 2.
- 4 = 1 + 3.
- 5 = 2 + 3.
- 6 = 1 + 2 + 3.
- Các số 1, 2, 3 ban đầu.
Sau khi tạo ra các số, máy tính sẽ tráo đổi vị trí các số tạo được tạo thành một dãy số p, ví dụ dãy p có thể là (4, 3, 5, 2, 1, 3, 6). Nhiệm vụ của bạn là khôi phục lại tập S ban đầu và in ra các số trong tập S theo thứ tự từ nhỏ đến lớn.
Input, Output và Subtasks
Input: (RECOVER.inp
)
- Dòng đầu gồm số nguyên dương duy nhất n.
- Dòng tiếp theo gồm 2^n - 1 số nguyên dương p_1, p_2, ..., p_n (p_i \le 10^{18}).
Output: (RECOVER.out
)
- In ra các số trong tập S theo thứ tự từ nhỏ đến lớn.
Subtasks
- Subtask 1 (30\%): n = 2.
- Subtask 2 (30\%): n = 3.
- Subtask 3 (20\%): n \le 5.
- Subtask 4 (20\%): n \le 20.
Sample
Input (RECOVER.inp
)
3
4 3 5 2 1 3 6
Output (RECOVER.out
)
1 2 3
Note
- Chú thích trên đề bài.
Bình luận