You are on page 1of 6

TS.

Nguyễn Thanh Hùng

BÀI TẬP ÔN TẬP


Lưu ý:
• Các em làm bài và chấm trên hệ thông nhé.
• Làm bài từ 6pm đến 9pm.
• Có một số bài đã làm và sửa rồi nhưng các em cần cài lại ôn tập và chấm lại.
• Dữ liệu đều nhập và xuất từ file với tên có trong mỗi bài.
Bài 1. TÌM KIẾM (SEARCH.*)
Nhập vào số nguyên dương 𝑛 và dãy số nguyên 𝐴 = (𝑎1 , 𝑎2 , … , 𝑎𝑛 ), sau đó nhập vào một giá trị 𝑣
• Cho biết chỉ số 𝑖 nhỏ nhất của phần tử 𝑎𝑖 = 𝑣
• Cho biết chỉ số 𝑖 lớn nhất của phần tử 𝑎𝑖 > 𝑣
Liệt kê các chỉ số 𝑖 mà 𝑎[𝑖] < 𝑣
Dữ liệu:
• Dòng 1 chứa số nguyên dương 𝑛 ≤ 105
• Dòng 2 chứa 𝑛 số nguyên dương 𝑎1 , 𝑎2 , … , 𝑎𝑛 cách nhau bởi dấu cách (∀𝑖: |𝑎𝑖 | ≤ 109 )
• Dòng 3 chứa giá trị 𝑣, (|𝑣| ≤ 109 )
Kết quả:
• Dòng 1 ghi chỉ số 𝑖 nhỏ nhất của phần tử 𝑎𝑖 = 𝑣, nếu ∄𝑖 mà 𝑎𝑖 = 𝑣, in ra số 0
• Dòng 2 ghi chỉ số 𝑖 lớn nhất của phần tử 𝑎𝑖 > 𝑣, nếu ∄𝑖 mà 𝑎𝑖 > 𝑣, in ra số 0
• Dòng 3 liệt kê theo thứ tự tăng dần các chỉ số 𝑖 mà 𝑎[𝑖] < 𝑣 cách nhau bởi dấu cách, nếu ∄𝑖 mà
𝑎𝑖 < 𝑣, dòng này để trống
Ví dụ

Sample Input Sample Output


8 2
1 4 2 9 7 2 9 4 7
4 1 3 6
Bài 2. MIN-MAX (MINMAX.PAS)
Nhập vào số nguyên dương 𝑛 và dãy số nguyên 𝐴 = (𝑎1 , 𝑎2 , … , 𝑎𝑛 ) không đồng thời bằng nhau.
Cho dãy số nguyên 𝐴 = (𝑎1 , 𝑎2 , … , 𝑎𝑛 ), gọi 𝐴𝑚𝑎𝑥 là giá trị lớn nhất trong dãy 𝐴:
𝐴𝑚𝑎𝑥 = max {𝑎𝑖 }
𝑖=1…𝑛

Giá trị 𝐴𝑚𝑎𝑥 được gọi là giá trị lớn thứ nhì trong 𝐴 nếu:
• Tồn tại ít nhất một phần tử trong 𝐴 bằng 𝐴𝑚𝑎𝑥 ′
• Bất kỳ phần tử 𝑎𝑖 nào trong 𝐴 lớn hơn 𝐴𝑚𝑎𝑥 ′ thì 𝑎𝑖 phải bằng 𝐴𝑚𝑎𝑥
Tương tự như vậy nếu gọi 𝐴𝑚𝑖𝑛 là giá trị nhỏ nhất trong dãy 𝐴:
𝐴𝑚𝑖𝑛 = min {𝑎𝑖 }
𝑖=1…𝑛

• ′
Giá trị 𝐴𝑚𝑖𝑛 được gọi là giá trị nhỏ thứ nhì trong 𝐴 nếu:
TS. Nguyễn Thanh Hùng

• Tồn tại ít nhất một phần tử trong 𝐴 bằng 𝐴𝑚𝑖𝑛′


Bất kỳ phần tử 𝑎𝑖 nào trong 𝐴 nhỏ hơn 𝐴𝑚𝑖𝑛′ thì 𝑎𝑖 phải bằng 𝐴𝑚𝑖𝑛
Cho biết các giá trị 𝐴𝑚𝑎𝑥, 𝐴𝑚𝑎𝑥 ′ , 𝐴𝑚𝑖𝑛, 𝐴𝑚𝑖𝑛′
Dữ liệu
• Dòng 1 chứa số nguyên 𝑛, (2 ≤ 𝑛 ≤ 105 )
• Dòng 2 chứa 𝑛 số nguyên dương 𝑎1 , 𝑎2 , … , 𝑎𝑛 cách nhau bởi dấu cách (∀𝑖: |𝑎𝑖 | ≤ 109 )
Kết quả
• Dòng 1 ghi hai giá trị 𝐴𝑚𝑎𝑥, 𝐴𝑚𝑎𝑥 ′ cách nhau bởi dấu cách
• Dòng 2 ghi hai giá trị 𝐴𝑚𝑖𝑛, 𝐴𝑚𝑖𝑛′ cách nhau bởi dấu cách
Ví dụ

Sample Input Sample Output


9 9 8
1 3 1 7 9 2 9 6 8 1 2
Bài 3. KIỂM TRA HOÁN VỊ (PERCHK.PAS)
Cho dãy số nguyên 𝑃 = (𝑝1 , 𝑝2 , … , 𝑝𝑛 ), hãy xác định 𝑃 có phải hoán vị của dãy số (1,2, … , 𝑛) hay không?
Dữ liệu: Vào từ thiết bị nhập chuẩn
• Dòng 1 chứa số nguyên dương n ≤ 106
• Dòng 2 chứa n số nguyên p1 , p2 , … , pn cách nhau bởi dấu cách. (∀i: |ai ≤ 109 |)
Kết quả: Ghi ra thiết bị xuất chuẩn từ YES nếu dãy 𝑃 là hoán vị của dãy số (1,2, … , 𝑛), từ NO nếu 𝑃 không
phải hoán vị của dãy số (1,2, … , 𝑛)
Sample Input Sample Output
6 YES
1 3 6 5 4 2
7 NO
1 3 6 5 3 2 7
5 NO
0 0 0 0 0

Bài 4. ĐOẠN TĂNG (INCSEG.*)


Cho dãy số nguyên 𝐴 = (𝑎1 , 𝑎2 , … , 𝑎𝑛 ). Hãy tìm một đoạn gồm các phần tử liên tiếp trong dãy 𝐴:
𝑎𝐿 , 𝑎𝐿+1 , … , 𝑎𝐻−1 , 𝑎𝐻 thỏa mãn hai điều kiện:
• Các phần tử trong đoạn có thứ tự không giảm: aL ≤ aL+1 ≤ ⋯ ≤ aH
• Số phần tử trong đoạn là nhiều nhất có thể
Quy ước: Đoạn chỉ gồm đúng 1 phần tử trong dãy 𝐴 cũng được coi là có thứ tự không giảm
Dữ liệu: Vào từ thiết bị nhập chuẩn
• Dòng 1 chứa số nguyên dương n ≤ 105
• Dòng 2 chứa n số nguyên a1 , a2 , … , an cách nhau bởi dấu cách (∀i: |ai | ≤ 109 )
Kết quả: Ghi ra thiết bị xuất chuẩn một số nguyên duy nhất là số phần tử của đoạn không giảm dài nhất tìm
được
TS. Nguyễn Thanh Hùng
Ví dụ

Sample Input Sample Output


12 4
88 99 11 22 22 33 11 66 33 44 55 77

Bài 5. TRỘN (MERGE.*)


Cho dãy hai số nguyên đã xếp theo thứ tự không giảm (tăng dần):
𝐴 = (𝑎1 ≤ 𝑎2 ≤ ⋯ ≤ 𝑎𝑚 )
𝐵 = (𝑏1 ≤ 𝑏2 ≤ ⋯ ≤ 𝑏𝑛 )
Người ta nối hai dãy 𝐴, 𝐵, sau đó sắp xếp lại các phần tử theo thứ tự không giảm để được dãy 𝐶:
𝑐1 ≤ 𝑐2 ≤ ⋯ ≤ 𝑐𝑚+𝑛
Hãy cho biết dãy 𝐶
Dữ liệu: Vào từ thiết bị nhập chuẩn
• Dòng 1 chứa hai số nguyên dương m, n ≤ 105
• Dòng 2 chứa m số nguyên a1 , a2 , … , am xếp theo thứ tự tăng dần cách nhau bởi dấu cách.
(∀i: |ai | ≤ 109 )
• Dòng 3 chứa n số nguyên b1 , b2 , … , bn xếp theo thứ tự tăng dần cách nhau bởi dấu cách.
(∀j: |bj | ≤ 109 )
Kết quả: Ghi ra thiết bị xuất chuẩn một dòng là các phần tử trong dãy 𝐶 xếp theo thứ tự tăng dần cách nhau
bởi dấu cách.

Sample Input Sample Output


5 4 1 2 3 4 5 6 7 8 9
1 3 5 7 9
2 4 6 8

Bài 6. SẮP XẾP (SORT.*)


Cho dãy số nguyên 𝐴 = (𝑎1 , 𝑎2 , … , 𝑎𝑛 ) hãy sắp xếp dãy 𝐴 theo thứ tự không tăng (giảm dần)
Dữ liệu: Vào từ thiết bị nhập chuẩn
• Dòng 1 chứa số nguyên dương n ≤ 5000
• Dòng 2 chứa n số nguyên a1 , a2 , … , an cách nhau bởi dấu cách (∀i: |ai | ≤ 109 )
Kết quả: Ghi ra thiết bị xuất chuẩn một dòng gồm các số trong dãy 𝐴 đã sắp theo thứ tự giảm dần cách
nhau bởi dấu cách.
Ví dụ
Sample Input Sample Output
5 5 4 3 2 1
4 1 2 3 5

Bài 7. SẮP XẾP (FASTSORT.*)


Cho dãy số nguyên 𝐴 = (𝑎1 , 𝑎2 , … , 𝑎𝑛 ) hãy sắp xếp dãy 𝐴 theo thứ tự không giảm (tăng dần)
Dữ liệu: Vào từ thiết bị nhập chuẩn
TS. Nguyễn Thanh Hùng

• Dòng 1 chứa số nguyên dương n ≤ 105


• Dòng 2 chứa n số nguyên a1 , a2 , … , an cách nhau bởi dấu cách (∀i: |ai | ≤ 109 )
Kết quả: Ghi ra thiết bị xuất chuẩn một dòng gồm các số trong dãy 𝐴 đã sắp theo thứ tự tăng dần cách nhau
bởi dấu cách.
Ví dụ

Sample Input Sample Output


5 1 2 3 4 5
4 1 2 3 5

Bài 8. GIÁ TRỊ KHÁC NHAU (DVALUES.*)


Cho dãy số nguyên 𝐴 = (𝑎1 , 𝑎2 , … , 𝑎𝑛 ), hãy liệt kê các giá trị có mặt trong dãy 𝐴, mỗi giá trị chỉ liệt kê một
lần.
Dữ liệu: Vào từ thiết bị nhập chuẩn:
• Dòng 1 chứa số nguyên dương n ≤ 106
• Dòng 2 chứa n số nguyên a1 , a2 , … , an cách nhau bởi dấu cách (∀i: |ai | ≤ 1000)
Kết quả: Ghi ra thiết bị xuất chuẩn một dòng gồm các giá trị có mặt trong 𝐴 xếp theo thứ tự giảm dần, các
giá trị ghi cách nhau bởi dấu cách
Ví dụ

Sample Input Sample Output


6 3 2 1
1 2 3 3 2 1

Bài 9. CẶP SỐ BẰNG NHAU (PAIRS.*)


Cho dãy số nguyên 𝐴 = (𝑎1 , 𝑎2 , … , 𝑎𝑛 ) hãy cho biết có bao nhiêu cặp chỉ số (𝑖, 𝑗) trong đó 𝑖 < 𝑗 và 𝑎𝑖 = 𝑎𝑗
Dữ liệu: Vào từ thiết bị nhập chuẩn:
• Dòng 1 chứa số nguyên dương n ≤ 106
• Dòng 2 chứa n số nguyên a1 , a2 , … , an cách nhau bởi dấu cách (∀i: |ai | ≤ 1000)
Kết quả: Ghi ra thiết bị xuất chuẩn số cặp chỉ số (𝑖, 𝑗) thỏa mãn 𝑖 < 𝑗 và 𝑎𝑖 = 𝑎𝑗
Ví dụ

Sample Input Sample Output


6 3
1 2 3 3 2 1

Bài 10. TRUNG BÌNH CỘNG (SUMAVR.*)


Cho dãy số nguyên 𝐵 = (𝑏1 , 𝑏2 , … , 𝑏𝑛 ), hãy tìm dãy số nguyên 𝐴 = (𝑎1 , 𝑎2 , … , 𝑎𝑛 ) sao cho ∀𝑖: 1 ≤ 𝑖 ≤ 𝑛
trung bình cộng của 𝑖 phần tử đầu tiên trong dãy 𝐴 đúng bằng 𝑏𝑖 :
𝑎1 + 𝑎2 + ⋯ + 𝑎𝑖
= 𝑏𝑖 , ∀𝑖 = 1,2, … , 𝑛
𝑖
Dữ liệu: Vào từ thiết bị nhập chuẩn:
TS. Nguyễn Thanh Hùng

• Dòng 1 chứa số nguyên dương n ≤ 105


• Dòng 2 chứa n số nguyên b1 , b2 , … , bn cách nhau bởi dấu cách (∀i: |bi | ≤ 109 )
Kết quả: Ghi ra thiết bị xuất chuẩn 𝑛 số 𝑎1 , 𝑎2 , … , 𝑎𝑛 theo đúng thứ tự cách nhau bởi dấu cách
Ví dụ

Sample Input Sample Output


5 1 3 2 6 8
1 2 2 3 4

Bài 11. TÌM HÌNH VUÔNG (SQUARE.*)


Trên mặt phẳng với hệ tọa độ Descartes vuông góc Ο𝑥𝑦 cho 𝑛 điểm. Hãy tìm hình vuông nhỏ nhất có cạnh
song song với một trong hai trục tọa độ chứa tất cả 𝑛 điểm đã cho (điểm nằm trên cạnh hình vuông cũng
bị tính là chứa trong hình vuông)
Dữ liệu: Vào từ thiết bị nhập chuẩn:
• Dòng 1 chứa số nguyên dương n ≤ 105
• n dòng tiếp theo, dòng thứ i chứa hai số nguyên xi , yi là tọa độ của một điểm (xi , yi ), ∀i: |xi |, |yi | ≤
109
Kết quả: Ghi ra thiết bị xuất chuẩn một số nguyên duy nhất là diện tích hình vuông tìm được
Ví dụ

Sample Input Sample Output

3 16
3 4 7
5 7 6
4 3
5

0 1 2 3 4 5 6 7
TS. Nguyễn Thanh Hùng
Bài 12. CẶP SỐ (DPAIRS.*)
Cho dãy số nguyên 𝐴 = (𝑎1 , 𝑎2 , … , 𝑎𝑛 ) và một số nguyên 𝑘 hãy cho biết có bao nhiêu cặp chỉ số (𝑖, 𝑗) trong
đó 𝑖 ≠ 𝑗 và 𝑎𝑖 − 𝑎𝑗 = 𝑘
Dữ liệu: Vào từ file văn bản DPAIRS.INP
• Dòng 1 chứa hai số nguyên n, k cách nhau bởi dấu cách (1 ≤ n ≤ 106 ; |k| ≤ 1000)
• Dòng 2 chứa n số nguyên a1 , a2 , … , an cách nhau bởi dấu cách (∀i: |ai | ≤ 1000)
Kết quả: Ghi ra file văn bản DPAIRS.OUT số cặp chỉ số (𝑖, 𝑗) thỏa mãn 𝑖 ≠ 𝑗 và 𝑎𝑖 − 𝑎𝑗 = 𝑘
Ví dụ

Sample Input Sample Output


5 4 3
1 5 6 2 6
5 0 20
0 0 0 0 0

Bài 13. SƠN CỘT (PAINT.*)


Trên một nền phẳng đã được chia thành các lưới ô vuông đơn vị gồm 𝑚 × 𝑛 ô, người ta đặt chồng khít lên
nhau các khối lập phương đơn vị thành những cột. Khối dưới cùng của cột chiếm trọn một ô của lưới. Chiều
cao của mỗi cột được tính bằng số khối lập phương đơn vị tạo thành cột đó. Sau khi xếp xong toàn bộ các
cột, người ta tiến hành sơn các mặt nhìn thấy được của các cột.
Yêu cầu: Biết chiều cao của mỗi cột, hãy tính số đơn vị diện tích cần sơn.
Dữ liệu: Vào từ thiết bị nhập chuẩn
• Dòng đầu tiên chứa hai số nguyên dương m, n ≤ 1000 là kích thước của lưới nền (m hàng, n cột)
• m dòng tiếp theo, dòng thứ i chứa n số tự nhiên có giá trị không quá 109 , số thứ j biểu thị chiều
cao của cột dựng tại ô ở hàng i, cột j của lưới.
Các số trên một dòng của Input cách nhau ít nhất một dấu cách
Kết quả: Ghi ra thiết bị xuất chuẩn là số diện tích cần sơn.
Ví dụ:

Sample Input Sample Output

2 3 42
4 3 4
1 2 1

You might also like