Bedan Contest #04 - C - Tiền lì xì
Nên nhớ là có đọc tên file đấy
Trong những ngày Tết, tiền lì xì là một thứ không thể thiếu đối với những bạn nhỏ và hầu như bạn nào cũng thích. Mặc dù đã ăn 14 nồi bánh chưng nhưng mỗi khi Tết đến, lại vô cùng háo hức khi được nhận tiền lì xì và năm nay cũng như vậy.
Hôm nay, đến nhà của bác mình là để chơi. Nhắc tới , mọi người đều biết đến bác là một người siêu giàu khi sở hữu 69 căn biệt thự siêu to khổng lồ và 420 món đồ mua từ shop Thái Công. Thấy người cháu của mình đến chơi, bác liền đem ra cho n phong bì lì xì với phong bì thứ i sẽ có a_i đồng. Để thêm phần thử thách, bác muốn chia n phong bì trên thành k dãy phong bì liên tiếp khác nhau. Khi số, số tiền lì xì nhận được sẽ là tích của tổng từng dãy phong bì trong k dãy trên.
Nhận thấy đây là cơ hội làm giàu, quyết định chấp nhận thử thách của bác đặt ra. Tuy nhiên, cậu không biết phải chia n phong bì trên như thế nào để số tiền cậu nhận được là lớn nhất có thể. Bạn hãy tính giúp nhé.
Lưu ý rằng trong mỗi cách chia, mỗi phong bì chỉ được thuộc duy nhất 1 dãy phong bì lì xì.
Input, Output and Scoring
Input (lixi.inp)
- 2 số nguyên dương n, k (1 \le k \le n \le 200).
- Dãy a gồm n phần tử a_1, a_2, ..., a_n (1 \le a_i \le n).
Output (lixi.out)
- In ra k dòng, dòng thứ i là 1 cặp số (l, r) nghĩa là dãy phong bì thứ i sẽ chứa các phong bì từ vị trí l đến r.
- Nếu có nhiều cách chia có cùng số tiền lớn nhất, hãy in ra một cách chia bất kỳ.
Scoring
- Subtask 1 (10\%): k = 2.
- Subtask 2 (30\%): 1 \le k \le n \le 20.
- Subtask 3 (60\%): Không giới hạn gì thêm.
Test 1
Input (lixi.inp)
5 3
2 3 1 4 2
Output (lixi.out)
1 2
3 4
5 5
Note
- Khi chia như trên, sẽ nhận được số tiền lì xì lớn nhất là 50.
Test 2
Input (lixi.inp)
3 2
1 1 1
Output (lixi.out)
1 2
3 3
Note
- Cách chia (1, 1) và (2, 3) cũng sẽ nhận được số tiền lì xì là 2 như trên.
Bedan Contest #04 - B - Trang trí nhà cửa
Nên nhớ là có đọc tên file đấy đồ ngốc.
Tết sắp đến rồi, ai ai cũng đang bận rộn với việc trang trí và dọn dẹp nhà cửa mà thì chưa. Vậy là cậu quyết định rủ ngvanminh_ cùng nhau đi mua một vài món đồ để về trang thí nhà cửa.
Khi đến nơi, đã ngạc nhiên trước không khí ở nơi đây. Bầu không khí ấm áp, nhạc Tết vang khắp nơi cùng với sự vui vẻ cười đùa của mọi người với nhau, ... làm cả 2 cùng vui theo. Nơi đây có tổng cộng n loại món đồ, món loại thứ i có giá tiền là a_i và số lượng là không giới hạn. Hầu hết các món đồ ở đây đều rất đẹp mắt làm đều muốn mua nhưng với m đồng có trong tay, và ngvanminh_ quyết định chỉ mua 4 món đồ. Bỗng cả 2 thắc mắc với m đồng đang có, cậu có bao nhiêu cách mua 4 món đồ mà sử dụng hết m đồng trên. Số lượng món đồ quá nhiều làm cả 2 không thể tính được, bạn hãy tính giúp và ngvanminh_ nhé.
Input, Output and Scoring
Input (decor.inp)
- 2 số nguyên dương n, m (1 \le n \le 10^3; 1 \le m \le 10^9).
- Dãy a gồm n phần tử a_1, a_2, ..., a_n (1 \le a_i \le 10^{9}).
Output (decor.out)
- In ra kết quả sau khi chia lấy dư cho 1234567891.
Scoring
- Subtask 1 (15\%): 1 \le n \le 20.
- Subtask 2 (35\%): 1 \le n \le 10^2.
- Subtask 3 (50\%): Không giới hạn gì thêm.
Test 1
Input (decor.inp)
3 12
7 1 5
Output (decor.out)
6
Note
- Có 6 cách chọn 4 món đồ là chọn các món ở vị trí theo thứ tự là (2, 2, 3, 3); (2, 3, 2, 3); (2, 3, 3, 2); (3, 2, 2, 3), (3, 2, 3, 2) và (3, 3, 2, 2).
Test 2
Input (decor.inp)
4 10
1 2 4 2
Output (decor.out)
38
Bedan Contest #04 - A - Trò chơi
Nên nhớ là có đọc tên file đấy đồ ngốc.
Chỉ còn vài ngày nữa là Tết năm 2024 này sẽ đến. Người người nhà nhà đều háo hức chờ đợi và của chúng ta cũng vậy. Hôm nay là ngày cuối cùng đi học trước khi kì nghỉ Tết bắt đầu và vô cùng vui sướng. Nghỉ tới lúc mình được ngủ nướng thật đã, đi chơi với gia đình và bạn bè, ăn những món ăn ngon miệng, ... thì lại càng mong muốn Tết đến thật nhanh. Và trước khi nó bắt đầu, cùng với bạn của cậu là ngvanminh_ sẽ cùng nhau chơi một thứ gì đó trước khi xa nhau nhiều ngày. Vậy là nghĩ ra trò chơi sau.
- sẽ chọn 2 số nguyên dương n, k bất kỳ.
- Tại mỗi thao tác, ngvanminh_ có thể chọn 1 số nguyên tố p và nhân nó với n (nghĩa là n = n\times p).
- Trò chơi cứ tiếp diễn như vậy cho đến khi \sqrt[k]{n} là một số nguyên.
Trò chơi có vẻ khá thú vị nên và ngvanminh_ quyết định sẽ cùng nhau chơi t lần và mỗi lần chơi, cả 2 sẽ chơi sao cho số lượng thao tác là ít nhất có thể. Tuy nhiên, cả 2 lại không biết chơi như thế nào để tối ưu. Bạn hãy tính giúp và ngvanminh_ nhé.
Input, Output and Scoring
Input (game.inp)
- Số nguyên dương t (1 \le t \le 10^5).
- t dòng tiếp theo, mỗi dòng gồm 2 số nguyên dương n, k (2 \le n, k \le 10^9).
Output (game.out)
- Với mỗi dòng, hãy in ra kết quả thỏa mãn.
Scoring
- Subtask 1 (20\%): t = 1.
- Subtask 2 (40\%): 1 \le n, k \le 10^6.
- Subtask 3 (40\%): Không giới hạn gì thêm.
Test
Input (game.inp)
3
8 3
12 2
18 4
Output (game.out)
0
1
5
Note
- Ở lần chơi thứ 1, \sqrt[3]{8} đã là một số nguyên nên ta không cần thực hiện thao tác nào.
- Ở lần chơi thứ 2, ta có thể nhân 3 vào n để có n = 36. Khi đó số lượng thao tác là 1, có thể thấy đây là cách thực hiện ít thao tác nhất.
A cộng B
Bạn được cho hai số a và b. Nhiệm vụ của bạn là tính tổng của a+b.
Input, Output và Subtasks
Input: (bàn phím)
- Gồm duy nhất hai số a,b\ (|a|,|b|\le 10^9).
Output: (màn hình)
- Duy nhất một số là kết quả của bài toán.
Sample
Input (bàn phím)
1 1
Output (màn hình)
2
Tập đoạn tốt (HSG9 HN 2024)
Một đoạn thẳng được mô tả bằng 1 cặp số nguyên [L,R]. Hai đoạn thẳng được gọi là giao nhau nếu chúng có ít nhất 1 điểm chung.
Một tập đoạn tốt là tập các đoạn thẳng sao cho với mỗi một đoạn thẳng trong tập đều giao nhau với ít nhất 1 đoạn thẳng khác nhau trong tập đó (coi tập đoạn thẳng chỉ có 1 đoạn thẳng duy nhất là tập đoạn tốt). Ví dụ, tập {[1,3],[4,5],[5,7],[3,4]} hay {[1,4],[2,3]} là 1 tập đoạn tốt, còn {[1,4],[3,5],[6,7]} thì không phải là tập đoạn tốt. Độ tốt của 1 tập đoạn là số lượng cấc đoạn trong tập đó.
Lưu ý: Hai tập đoạn tốt có ít nhất 1 điểm chung sẽ được gộp thành 1 tập đoạn tốt lớn hơn có độ tốt bằng tổng hai tập đoạn tốt đó.
Yêu cầu: Ban đầu tập đoạn thẳng không có đoạn thẳng nào. Cho N đoạn thẳng. Mỗi lần lấy 1 đoạn thẳng theo thứ tự thêm vào tập đoạn thẳng, đoạn thứ i được biểu diễn bởi 2 số nguyên dương (L_i, R_i). Yêu cầu tính tích độ tốt của các tập đoạn tốt được sinh ra từ tập đoạn thẳng hiện tại sau khi thêm đoạn thẳng thứ i. Do kết quả rất lớn, in ra phần dư của đáp án sau khi chia cho 10^9+7.
Input, Output và Scoring
Input (DOANTOT.INP)
- Dòng đầu chứa số nguyên N (1 \le N \le 10^5).
- Trong N dòng tiếp theo, dòng thứ i chứa 2 số nguyên dương L_i, R_i (L_i \le R_i \le 10^9).
Output (DOANTOT.OUT)
- Gồm N dòng, dòng thứ i chứa số nguyên dương là kết quả theo yêu cầu đề bài khi thêm đoạn thẳng thứ i.
Subtasks
- Subtask 1 (30\%) L_i = R_i ∀ 1 \le i \le n, n \le 30.
- Subtask 2(50\%) R_i \le 1000 ∀ 1 \le i \le n, n \le 1000.
- Subtask 3 (20\%) không có ràng buộc gì thêm.
Test
Input (DOANTOT.INP)
6
1 3
4 5
5 7
3 4
8 10
9 11
Output (DOANTOT.OUT)
1
1
2
4
4
8
Note
Sau khi thêm đoạn thứ:
- 1: Có 1 tập đoạn tốt độ tốt 1 là {[1,3]}.
- 2: Có 2 tập đoạn tốt độ tốt 1 là {[1,3]} và {[4,5]}.
- 3: Có 1 tập đoạn tốt độ dài 1 là {[1,3]}, 1 tập đoạn tốt độ dài 2 là {[4,5],[5,7]}.
- 4: Có 1 tập đoạn tốt độ dài 4 là {[1,3],[4,5],[5,7],[3,4]}.
- 5: Có 1 tập đoạn tốt độ dài 1 là {[8,10]}, 1 tập đoạn tốt độ dài 4 là {[1,3],[4,5],[5,7],[3,4]}.
- 6: Có 1 tập đoạn tốt độ dài 2 là {[8,10],[9,11]}, 1 tập đoạn tốt độ dài 4 là {[1,3],[4,5],[5,7],[3,4]}.
Thử thách robot (HSG9 HN 2024)
Cho bảng hình chữ nhật có N hàng M cột và một số nguyên dương K. Số nằm ở hàng i cột j có tọa độ là (i, j) và giá trị A_{i, j}. Một con robot đang đứng ở vị trí (1, 1) và cần di chuyển đến ô (N, M). Khi đứng ở ô (i, j) robot chỉ có thể di chuyển vào ba ô (i, j + 1), (i + 1, j), (i + 1, j + 1).
Cho Q truy vấn, mỗi truy vấn gồm một số tự nhiên X (X < K). Với mỗi truy vấn, hãy cho biết đường đi của robot từ ô (1, 1) đến ô (M, N) có thể đi qua nhiều nhất bao nhiêu ô (i, j) thỏa mãn A_{i, j} \mod K = X.
Yêu cầu: Hãy trả lời Q truy vấn của đề bài.
Input, Output và Scoring
Input: (ROBOT.INP)
- Dòng đầu tiên gồm bốn số nguyên dương N, M, Q, K (1 \le N, M \le 1000, 1 \le Q \le 10^5, 1 \le K \le 10^9).
- Trong N dòng tiếp theo, mỗi dòng gồm M số nguyên dương biểu diễn bảng A (1 \le A_{i, j} \le 10^9).
- Trong Q dòng tiếp theo, mỗi dòng gồm một số tự nhiên X thể hiện truy vấn tương ứng (0 \le X \le K).
Output: (ROBOT.OUT)
- Gồm Q dòng, dòng thứ i là kết quả của truy vấn thứ i.
Scoring
- 20\% số điểm có M = 1.
- 20\% số điểm khác có M = 2, Q \le 1000.
- 30\% số điểm khác có N, M, K \le 300.
- 30\% số điểm còn lại không có giới hạn gì thêm.
Sample
Input (ROBOT.INP)
3 4 2 6
1 1 1 7
2 8 9 1
1 3 4 2
1
2
Output (ROBOT.OUT)
5
3
Note
Trò chơi (HSG9 HN 2024)
Bạn có 1 nhân vật cần được tăng chỉ số sức mạnh. Nhân vật của bạn có N kĩ năng được đánh thứ tự từ 1 đến N. Kĩ năng thứ i (1 \le i \le N) có 2 loại chỉ số tăng tiến là s_i và e_i. Trong lần đầu tiên tăng cấp kĩ năng thứ i, nhân vật của bạn được (s_i+e_i) chỉ số sức mạnh. Trong các lần tiếp theo tăng cấp kĩ năng thứ i, nhân vật của bạn chỉ nhận được thêm e_i chỉ số sức mạnh. Bạn có thể tăng cấp 1 kĩ năng bất kì không giới hạn số lần. Trò chơi diễn ra trong M phút, mỗi phút nhân vật của bạn nhận được 1 lần tăng cấp kĩ năng.
Yêu cầu: Hãy tìm chỉ số sức mạnh lớn nhất mà nhân vật của bạn có thể đạt được sau M phút chơi.
Input, Output và Scoring
Input (TROCHOI.inp)
- Dòng đầu tiên chứa 2 số nguyên dương N và M (1 \le N \le 10^5; 1 \le M \le 10^9).
- Dòng thứ i trong N dòng tiếp theo chứa 2 số nguyên dương s_i và e_i (s_i \le 10^9, e_i \le 10^9).
Output (TROCHOI.out)
- Một số nguyên duy nhất là chỉ số sức mạnh lớn nhất mà nhân vật của bạn có thể đạt được.
Scoring
- Subtask 1 (40\%): m = 2
- Subtask 2 (40\%): m \le 100
- Subtask 3 (20\%): Không có ràng buộc gì thêm.
Test
Input (TROCHOI.inp)
3 4
2 2
2 5
5 1
Output (TROCHOI.out)
23
Note
Cách nâng cấp tối ưu nhất là:
- Nâng cấp 3 lần kĩ năng 2.
- Nâng cấp 1 lần kĩ năng 3.
Tổng chỉ số sức mạnh nhận được sẽ là (2+5)+5+5+(5+1) = 23
Ước chung (HSG9 HN 2024)
Cho trước hai số nguyên dương A và B.
Yêu cầu: Hãy lập trình đưa ra k là ước chung lớn thứ hai của A và B. Nếu k không tồn tại thì in ra -1.
Input, Output and Scoring
Input (UOCCHUNG.INP)
- Một dòng duy nhất chứa hai số tự nhiên A, B (A, B \le 10^{12}).
Output (UOCCHUNG.OUT)
- Một số tự nhiên duy nhất là kết quả của bài toán.
Scoring
- Subtask 1 (80\%): A, B \le 10^3.
- Subtask 2 (20\%): Không có ràng buộc gì thêm.
Test
Input (UOCCHUNG.INP)
30 40
Output (UOCCHUNG.OUT)
5
Hóa học (HSG 9 HN 2024)
Cho phương trình hóa học sau: 3Fe + 2O_2 \rightarrow Fe_3O_4.
Cho biết số mol của Fe là A, số mol của O_2 là B.
Yêu cầu: Hãy lập trình đưa ra phần nguyên số mol của chất sản phẩm Fe_3O_4.
Input and Output
Input (HOAHOC.INP)
- Một dòng duy nhất chứa hai số tự nhiên A, B (A, B \le 10^{18}).
Output (HOAHOC.OUT)
- Một số tự nhiên duy nhất là kết quả của bài toán.
Test
Input (HOAHOC.INP)
10 10
Output (HOAHOC.OUT)
3
Đếm số dãy con tăng độ dài K (HSG CLQĐ NT 2024)
Cho dãy số nguyên a_1, a_2, ..., a_n. Một dãy (a_{i_1}, a_{i_2}, ..., a_{i_k}) thỏa mãn.
- 1 \le i_1 < i_2 < ... < i_k \le n.
- a_{i_1} < a_{i_2} < ... < a_{i_k}.
được gọi là dãy con tăng của a. Số phần tử của dãy là độ dài của dãy đó.
Yêu cầu: Cho dãy số nguyên a_1, a_2, ..., a_n và một số nguyên k. Hãy đếm xem trong dãy có bao nhiêu dãy con tăng độ dài k.
Input and Output
Input (CINCSEQ.INP)
- Dòng đầu tiên là hai số nguyên dương n, k (1 \le k \le n \le 100).
- Dòng thứ hai chứa n số nguyên a_1, a_2, ..., a_n các số cách nhau ít nhất một dấu cách.
Output (CINCSEQ.OUT)
- Ghi ra một số nguyên duy nhất là số dãy con tăng độ dài k tìm được.
Test
Input (CINCSEQ.INP)
10 5
1 2 3 4 5 6 7 8 9 10
Output (CINCSEQ.OUT)
252
Cặp số đối nhau (HSG CLQĐ NT 2024)
Cho dãy số nguyên a_1, a_2, ..., a_n. Hãy cho biết có bao nhiêu cặp chỉ số (i, j) trong đó i < j thỏa mãn a_i = -a_j.
Input and Output
Input (NEGPAIRS.INP)
- Dòng đầu tiên là một số nguyên dương n (1 \le n \le 10^5).
- Dòng thứ hai chứa n số nguyên a_1, a_2, ..., a_n (|a_i| \le 100) cách nhau bởi dấu cách.
Output (NEGPAIRS.OUT)
- In ra một số nguyên duy nhất là số cặp (i, j) thỏa mãn yêu cầu đề bài.
Test 1
Input (NEGPAIRS.INP)
9
-3 -2 -1 0 9 0 1 2 3
Output (NEGPAIRS.OUT)
4
Test 2
Input (NEGPAIRS.INP)
4
0 0 0 0
Output (NEGPAIRS.OUT)
6
Tìm tên (HSG CLQĐ NT 2024)
Học trò của giáo xư X tỏ ra rất kém trong môn hoá học. Để cải thiện tình hình học tập môn này, việc đầu tiên là phải nhớ được những tên khoa học của các nguyên tố và hợp chất.
Với một tên cho bởi xâu kí tự S chỉ gồm các chữ cái thường tiếng Anh. Giáo sư X viết vào sau mỗi nguyên âm ("a", "e", "i", "o", "u", "y") một chữ cái "m" để đc xâu S'. Các sinh viên được cho xâu S' và yêu cầu tìm xâu S.
Yêu cầu: Hãy giúp các bạn sinh viên tìm tên S ban đầu
Input and Output
Input (FINDNAME.INP)
- Một dòng chứa xâu kí tự S' chỉ gồm chữ cái thường (1 \le |S'| \le 10^5).
Output (FINDNAME.OUT)
- Xâu kí tự S tìm được.
Test
Input (FINDNAME.INP)
omxymgemn
Output (FINDNAME.OUT)
oxygen
Thuê nhà (HSG9 BR 2024)
Tại một trung tâm hội nghị có một hội trường lớn, rất đẹp nên nhận được n đơn đặt hàng của n công ty sự kiện. Công ty thứ i muốn sử dụng hội trường này trong khoảng thời gian từ a_i đến b_i và trả tiền thuê là c_i.
Yêu cầu: Hãy bố trí lịch thuê hội trường để tổng số tiền thu được là lớn nhất mà thời gian sử dụng hội trường của hai công ty bất kỳ đều không trùng nhau.
Input, Output and Scoring
Input (REHALL.inp)
- Dòng đầu tiên gồm một số nguyên dương n (n \le 10^5).
- n dòng tiếp theo, mỗi dòng gồm ba số nguyên a_i, b_i, c_i cách nhau một khoảng trắng (1 \le a_i < b_i \le 10^5, 1 \le c_i \le 10^5).
Output (REHALL.out)
- Tổng số tiền thu được lớn nhất.
Example
Input (REHALL.inp)
5
1 2 100
5 6 300
3 4 200
7 8 400
8 10 200
Output (REHALL.out)
1000
Đội tình nguyện (HSG9 BR 2024)
Có n học sinh của một trường THCS tham gia một đội tình nguyện viên, học sinh thứ i có chiều cao h_i. Tuy nhiên, ban tổ chức muốn đội hình phải gồm những bạn học sinh có chiều cao bằng nhau (để đội hình đồng đều, đẹp).
Yêu cầu: Hãy giúp ban tổ chức chọn ra một nhóm các học sinh có chiều cao bằng nhau với số lượng nhiều nhất, nếu có nhiều nhóm có số lượng bằng nhau thì chọn nhóm có chiều cao lớn nhất.
Input, Output and Scoring
Input (TNV.inp)
- Dòng thứ nhất gồm một số nguyên dương n (1 \le n \le 10^5).
- Dòng thứ hai gồm n số nguyên dương h_1, h_2, ..., h_n (h_i \le 250).
Output (TNV.out)
- Một dòng duy nhất ghi chiều cao và số lượng học sinh được chọn cách nhau một ký tự trắng.
Example
Input (TNV.inp)
6
178 167 167 167 187 156
Output (TNV.out)
167 3
Giai thừa kép (HSG9 BR 2024)
Biết n!! được quy ước như sau:
- n!! = 1 nếu n = 0
- n!! = 1 \times 3 \times 5 \times ... n nếu n lẻ.
- n!! = 2 \times 4 \times 6 \times ... n nếu n chẵn.
Yêu cầu: Tính 1!! - 2!! + 3!! - ... + (-1)^{n + 1}n!!.
Input, Output and Scoring
Input (FADOUBLE.inp)
- Một số nguyên dương n duy nhất (1 \le n \le 30).
Output (FADOUBLE.out)
- Kết quả tìm được.
Example
Input (FADOUBLE.inp)
5
Output (FADOUBLE.out)
9