HSG9 An Giang 2025-2026

Bộ đề bài

# Bài tập Điểm Thời gian: Giới hạn bộ nhớ
1 Câu 1 - An Giang 2026 20 (p) 1.0s 256M
2 Câu 2 - An Giang 2026 30 (p) 1.0s 256M
3 Câu 3 - An Giang 2026 40 (p) 1.0s 256M
4 Câu 4 - An Giang 2026 50 (p) 1.0s 256M

1. Câu 1 - An Giang 2026

Điểm: 20 (p) Thời gian: 1.0s Bộ nhớ: 256M Input: bai01.inp Output: bai01.out

Bài 1: Ngôi nhà (ngoinha.*)

Mô tả vấn đề

\(N\) ngôi nhà được xếp thành một hàng ngang dọc theo bờ biển. Mỗi ngôi nhà thứ \(i\) có chiều cao là \(H[i]\). Quy ước bãi biển nằm ở bên phải dãy ngôi nhà theo hướng từ trước nhìn vào. Một ngôi nhà được coi là nhìn thấy bãi biển nếu tất cả các ngôi nhà nằm ở bên phải nó đều thấp hơn nó.

Yêu cầu

Hãy viết chương trình tính số lượng ngôi nhà có thể nhìn thấy bãi biển.

Dữ liệu vào

Đọc từ file văn bản BAI01.INP gồm nhiều dòng:

  • Dòng thứ nhất chứa số tự nhiên \(N\) (\(1 \le N \le 500\)).
  • Dòng thứ hai gồm \(N\) số tự nhiên biểu thị độ cao các ngôi nhà (\(H[i] \le 100\), với \(i=1, 2, 3, \dots, N\)), mỗi số cách nhau một ký tự khoảng trắng.

Dữ liệu ra

Ghi vào file văn bản BAI01.OUT:

  • Một số nguyên duy nhất là số lượng ngôi nhà nhìn thấy bãi biển.

Ví dụ

BAI01.INP BAI01.OUT Giải thích
6

7 6 8 9 12 11
2 Có 2 ngôi nhà nhìn thấy bãi biển là ngôi nhà có chiều cao 12 và 11.

Ràng buộc & Subtask

  • \(1 \le N \le 500\).
  • \(H[i] \le 100\).
  • Không có ràng buộc subtask cụ thể.

2. Câu 2 - An Giang 2026

Điểm: 30 (p) Thời gian: 1.0s Bộ nhớ: 256M Input: bai02.inp Output: bai02.out

Bài 2: Vị trí (vitri.*)

Mô tả vấn đề

Xét dãy số \(D\) được tạo ra bằng cách: Dòng thứ \(i\) gồm \(i\) số tự nhiên liên tiếp bắt đầu từ \(i\).
Ví dụ 5 dòng đầu tiên tạo thành dãy:
1 2 3 3 4 5 4 5 6 7 5 6 7 8 9 ...

Yêu cầu

Viết chương trình tìm vị trí xuất hiện đầu tiên của số \(K\) trong dãy \(D\).

Dữ liệu vào

Đọc từ file văn bản BAI02.INP:

  • Một dòng duy nhất chứa số tự nhiên \(K\) (\(1 < K < 10^{10}\)).

Dữ liệu ra

Ghi vào file văn bản BAI02.OUT:

  • Một số duy nhất là vị trí xuất hiện đầu tiên của số \(K\) trong dãy \(D\).

Ví dụ

BAI02.INP BAI02.OUT
6 9

Ràng buộc & Subtask

  • \(1 < K < 10^{10}\).

3. Câu 3 - An Giang 2026

Điểm: 40 (p) Thời gian: 1.0s Bộ nhớ: 256M Input: bai03.inp Output: bai03.out

Bài 3: Chuẩn hóa (chuanhoa.*)

Mô tả vấn đề

Một văn bản được gọi là chuẩn nếu đáp ứng các điều kiện sau:

  1. Giữa hai từ liền nhau có duy nhất một ký tự khoảng trắng.
  2. Các dấu ngắt câu (dấu chấm, dấu phẩy, dấu chấm phẩy, dấu chấm hỏi, dấu chấm than) được đặt sát vào ký tự cuối của từ đứng trước nó, sau đó mới đến ký tự khoảng trắng.
  3. Các dấu mở ngoặc (mở ngoặc đơn, mở ngoặc vuông, mở ngoặc kép) phải đặt ngay trước từ đầu tiên trong ngoặc, không có khoảng trắng giữa từ và dấu mở ngoặc.
  4. Các dấu đóng ngoặc (đóng ngoặc đơn, đóng ngoặc vuông, đóng ngoặc kép) phải đặt ngay sau từ cuối cùng trong ngoặc, không có khoảng trắng giữa từ và dấu đóng ngoặc.

Yêu cầu

Viết chương trình kiểm tra và đưa đoạn văn bản về dạng văn bản chuẩn theo các điều kiện trên.

Dữ liệu vào

Đọc từ file văn bản BAI03.INP:

  • Gồm nhiều dòng, mỗi dòng không quá 255 ký tự.

Dữ liệu ra

Ghi vào file văn bản BAI03.OUT:

  • Các đoạn văn bản đã được chuẩn hóa tương ứng với dữ liệu vào.

Ví dụ

BAI03.INP BAI03.OUT
( Cham ngoan , hoc gioi ) (Cham ngoan, hoc gioi)
" [ Chao mung ] " ngay 26 thang 03 . "[Chao mung]" ngay 26 thang 03.

4. Câu 4 - An Giang 2026

Điểm: 50 (p) Thời gian: 1.0s Bộ nhớ: 256M Input: bai04.inp Output: bai04.out

Bài 4: Độ dài đoạn (doandai.*)

Mô tả vấn đề

Độ dài đoạn là một đoạn gồm các số ngẫu nhiên (tăng, giảm tùy ý) trong dãy số theo thứ tự từ trái sang phải. Cho dãy \(N\) số nguyên dương.

Yêu cầu

Viết chương trình tìm độ dài đoạn con giảm dài nhất (\(|a[i]| > |a[i+1]|\)) mà có tổng các phần tử nhỏ nhất. Nếu có nhiều đoạn con bằng nhau thì in ra đoạn đầu tiên xuất hiện.

Dữ liệu vào

Đọc từ file văn bản BAI04.INP gồm nhiều dòng:

  • Dòng thứ nhất chứa số tự nhiên \(N\) (\(1 \le N \le 500\)).
  • Dòng thứ hai gồm \(N\) số nguyên (\(|a[i]| \le 1000\)), mỗi số cách nhau một ký tự khoảng trắng.

Dữ liệu ra

Ghi vào file văn bản BAI04.OUT gồm 3 dòng:

  • Dòng 1: Độ dài đoạn con giảm dài nhất có tổng nhỏ nhất.
  • Dòng 2: Tổng nhỏ nhất của đoạn con giảm dài nhất đó.
  • Dòng 3: Các phần tử của đoạn con đó, mỗi số cách nhau một khoảng trắng.

Ví dụ

BAI04.INP BAI04.OUT Giải thích
9

1 2 1 3 4 5 3 2 4
3

10

5 3 2
3 là độ dài đoạn giảm; 10 là tổng (5+3+2); Đoạn con là 5 3 2.
9

1 3 2 1 4 5 3 2 4
3

6

3 2 1
3 là độ dài đoạn giảm; 6 là tổng (3+2+1); Đoạn con là 3 2 1.

Ràng buộc & Subtask

  • \(1 \le N \le 500\).
  • \(|a[i]| \le 1000\).