Professional Documents
Culture Documents
cpp
An nghĩ ra một trò chơi mới dành cho k bạn trong trường. An đặt n tấm thẻ lên bàn, trên tấm thẻ
thứ i có ghi số ai. Mặt có ghi số của các tấm thẻ được đặt úp xuống mặt bàn.
Mỗi lượt chơi, An gọi một bạn chưa từng được chơi lượt nào trước đó lên rút ra hai tấm thẻ bất
kì. Sau khi chọn xong bạn đó sẽ để tấm thẻ có ghi số lớn hơn lại trên bàn (bạn lên sau không biết
được tấm thẻ mà bạn lên trước chọn) và mang tấm thẻ có giá trị nhỏ hơn về cho mình. Nếu hai
tấm thẻ mà bạn đó chọn có ghi hai số bằng nhau, bạn đó có thể lựa chọn mang về một tấm thẻ
bất kì trong hai tấm thẻ đó. Đặt S là tổng các số ghi trên k tấm thẻ mà các bạn mang về. Hãy cho
biết S có thể đạt giá trị nhỏ nhất và lớn nhất là bao nhiêu.
Dữ liệu:
Kết quả: In ra hai số nguyên dương cách nhau bởi một dấu cách là giá trị S nhỏ nhất và lớn nhất
có thể đạt được.
Ràng buộc:
Ví dụ:
INPUT OUTPUT Giải thích
5 3 6 9 Trong trường hợp xấu nhất:
1 2 3 4 5 • Bạn thứ nhất bốc tấm thẻ thứ 1 và 2, mang tấm thứ 1 về và
để lại tấm thứ 2.
• Bạn thứ hai bốc tấm thẻ thứ 2 và 3, mang tấm thứ 2 về và
để lại tấm thứ 3.
• Bạn thứ ba bốc tấm thẻ thứ 3 và 4, mang tấm thứ 3 về và để
lại tấm thứ 4.
Tổng các số trên các tấm thẻ của các bạn nhận được: 1 + 2 +
3 = 6.
Trong trường hợp tốt nhất:
• Bạn thứ nhất bốc tấm thẻ thứ 2 và 3, mang tấm thứ 2 về và
để lại tấm thứ 3.
• Bạn thứ hai bốc tấm thẻ thứ 3 và 4, mang tấm thứ 3 về và
để lại tấm thứ 4.
• Bạn thứ ba bốc tấm thẻ thứ 4 và 5, mang tấm thứ 4 về và để
lại tấm thứ 5.
Tổng các số trên các tấm thẻ của các bạn nhận được: 2 + 3 +
4 = 9.
2. seq0.cpp
Cho một dãy số gồm N số nguyên dương không vượt quá 1 tỉ. Ở mỗi bước, chọn hai số ai và aj (i
≠ j), đồng thời giảm hai số vừa chọn đi 1 đơn vị. Hãy cho biết liệu có thể biến dãy số đã cho
thành dãy toàn số 0 hay không?
Dữ liệu:
Ví dụ:
INPUT OUTPUT
4 YES
1 1 2 2
6 NO
1 2 3 4 5 6
2. ucln.cpp
Cho hai mảng a: a1, a2, a3, a4, ...an và b: b1, b2, b3, b4...bm . Với mỗi j = 1, 2, ..., m tìm ước chung
lớn nhất của (a1 + bj, a2 + bj, ...an + bj)
Dữ liệu
- Dòng đầu tiên mỗi test chứa hai số n và m là độ dài của mảng a và b (1 ≤ n,m≤ 2 × 105)
- Dòng thứ hai chứa n số là các phần tử của mảng a (1 ≤ ai ≤ 105)
- Dòng thứ ba chứa m số là các phần tử của mảng b (1 ≤ bi ≤ 105)
Kết quả: In ra m số, số thứ j là ước chung lớn nhất của (a1 + bj , a2 + bj, ...,an + bj).
Ví dụ:
INPUT OUTPUT
4 4 2 3 8 24
1 25 121 169
1 2 7 23
4. ffind.cpp
Dữ liệu:
Ví dụ:
INPUT OUTPUT
5 36
1 3 5 7 9
10 56
2 8 7 4 10 5 1 3 3 6