You are on page 1of 3

1. smm.

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:

- Dòng đầu tiên chứa hai số nguyên dương n, k (1 ≤ k < n ≤ 105).


- Dòng thứ hai chứa n số nguyên dương a1, a2, . . . , an (1 ≤ ai ≤ 109).

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:

- Sub1 (20% số test): n ≤ 5.


- Sub2 (80% số test): Không có ràng buộc gì thêm

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:

- Dòng thứ nhất là số tự nhiên N(1 ≤ N ≤ 105)


- Dòng thứ hai chứa N số nguyên a1, a2, ..., an(1 ≤ ai ≤ 109)

Kết quả: In ra YES nếu có thể, ngược lại, in ra NO.

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

Cho N số nguyên dương si (1 ≤ i ≤ N). Tìm 4 số nguyên khác nhau a, b, c, d (1 ≤ a, b, c, d


≤ N) sao cho (sa − sb) × (sc − sd) là lớn nhất.

Dữ liệu:

- Dòng đầu tiên gồm một số nguyên N (4 ≤ N ≤ 105).


- Dòng tiếp theo gồm N số nguyên dương si (1 ≤ si ≤ 1000).
Kết quả: Gồm 4 số nguyên dương a, b, c, d là kết quả của bài toán.

Ví dụ:
INPUT OUTPUT
5 36
1 3 5 7 9
10 56
2 8 7 4 10 5 1 3 3 6

You might also like