Ôn chuyên ngày 05 - 05 - 2026 (cửa sổ trượt - struct)

Số lớn nhất và nhỏ nhất của mọi dãy con liên tiếp cỡ K (kỹ thuật cửa sổ trượt)

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Cho mảng A có n phần tử nguyên dương, hãy in ra số lớn nhất và nhỏ nhất của mọi dãy con liên tiếp có K phần tử của mảng A


Ràng buộc: ~1 \leq N, K \leq 10^6~; ~1 \leq A[i] \leq 10^9~


In ra số lớn nhất và nhỏ nhất của mọi dãy con trên từng dòng


Input:
8 3
8 5 8 6 7 6 5 8
Output:
5 8
5 8
6 8
6 7
5 7
5 8

Giải thích: Tổng bằng 13 và dãy con đó là 6, -5, 12


Cửa sổ trượt trùng nhau (kỹ thuật cửa sổ trượt)

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Cho một mảng A có N phần tử và một số nguyên K. Hãy xác định xem trong mảng có tồn tại 2 phần tử A[i] và A[j] với i khác j mà A[i] = A[j] và abs(i - j) ~\leq~ K. Nếu có in ra YES, ngược lại in ra NO.


Ràng buộc: ~1 \leq K, N \leq 10^6~; ~1 \leq A[i] \leq 10^6~


Input 01:
13 7
2 8 6 8 1 3 7 8 5 6 3 9 4
Output 01:
YES
Input 02:
5 5
9 10 7 8 4
Output 02:
NO

Cửa sổ trượt (kỹ thuật cửa sổ trượt)

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Cho mảng A có n phần tử nguyên dương, hãy tìm dãy con liên tiếp có k phần tử và có tổng các phần tử là lớn nhất


Ràng buộc: ~1 \leq N, K \leq 10^7~; ~1 \leq A[i] \leq 10^9~


In ra tổng lớn nhất và dãy con có tổng lớn nhất đó


Input:
6 3
3 2 1 6 -5 12
Output:
13
6 -5 12

Giải thích: Tổng bằng 13 và dãy con đó là 6, -5, 12


Fence (của số trượt)

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Trước nhà Polycarpus có một hàng rào. Hàng rào gồm n tấm ván có cùng chiều rộng nối tiếp nhau từ trái sang phải. Chiều cao của tấm ván thứ i là hi mét, những tấm ván riêng biệt có thể có chiều cao riêng biệt.

Polycarpus đã mua một cây đàn piano sang trọng và đang nghĩ cách mang nó vào nhà. Để thực hiện được kế hoạch của mình, anh ta cần lấy đi đúng k tấm ván liên tiếp từ hàng rào. Những tấm ván cao hơn sẽ khó xé bỏ hàng rào hơn, vì vậy Polycarpus muốn tìm k tấm ván liên tiếp sao cho tổng chiều cao của chúng là nhỏ nhất có thể.

Viết chương trình tìm chỉ số của k tấm ván liên tiếp có tổng chiều cao nhỏ nhất. Hãy chú ý, hàng rào không phải xung quanh nhà Polycarpus, nó ở phía trước nhà


Đầu vào: Dòng đầu tiên của dữ liệu đầu vào chứa các số nguyên n và k (1 <= n <= 10^5,  1 <= k <= n) — số lượng ván trên hàng rào và chiều rộng của đàn piano. Dòng thứ hai chứa dãy số nguyên h1, h2, ..., hn (1   hi   100), trong đó hi là chiều cao của tấm ván thứ i của hàng rào.


In số nguyên j sao cho tổng chiều cao của các tấm ván j, j + 1, ..., j + k - 1 là nhỏ nhất có thể. Nếu có nhiều chữ j như vậy, hãy in bất kỳ chữ nào trong số đó.


Input:
7 3
1 2 6 1 1 7 1
Output:
3

Giải thích: Trong trường hợp này, ba tấm ván có chỉ số 3, 4 và 5 là 3 tấm ván có thể lấy, tổng chiều cao của chúng là 8.


Sửa đèn

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Tuyến đường ven biển của thành phố Highland có N chiếc đèn. Không may cơn bão vừa rồi đã làm hỏng B chiếc đèn. Để khắc phục sự cố và nhanh chóng khôi phục lại hoạt động du lịch, chính quyền thành phố đã quyết định sửa tạm thời một số đèn đường bị hỏng sao cho có ít nhất một khu vực có K chiếc đèn liên tiếp hoạt động. Các bạn hãy xác định xem số đèn đường cần phải sữa chữa ít nhất là bao nhiêu?

Đầu vào:

  • Dòng đầu tiên gồm 3 số nguyên dương N, K và B (1 ≤ B, K ≤ N ≤ 100 000).
  • B dòng tiếp theo, mỗi dòng chứa vị trí của một chiếc đèn bị hỏng.

Đầu ra: In ra số đèn đường cần sửa ít nhất sao cho có một khu vực có nhiều hơn hoặc bằng K chiếc đèn hoạt động.


Input:
10 6 5
2
10
1
5
9
Output:
1

K-Beauty

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Một đoạn con độ dài K được gọi là "Đẹp" nếu tổng các phần tử trong đó chia hết cho số nguyên X cho trước.

Hãy đếm số lượng đoạn con Đẹp.

Input:

  • Dòng 1: N, K, X.

  • Dòng 2: N số nguyên A[i].

Output:

  • Số lượng đoạn con Đẹp.

Ví dụ 1:

Input:
5 3 3
1 2 3 4 5
Output:
2

Ví dụ 2:

Input:
4 2 2
1 1 1 1
Output:
3

Struct nhân viên

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Khai báo cấu trúc nhânviên. Biết rằng thông tin của một nhân viên bao gồm: họ tên (30 ký tự), ngày sinh (kiểu ngày), lương (số thực), giới tính (0. Nữ, 1.Nam).

  • Nhập thông tin cho n nhân viên, với n được nhập từ bàn phím.

  • Hiển thị danh sách các nhân viên có trong danh sách.

  • Liệt kê các nhân viên trên 40 tuổi trong danh sách.

  • Đếm số lượng nhân viên có lương lớn hơn 1.000.000 đồng trong danh sách.

  • Viết hàm sắp xếp các nhân viên giảm dần theo năm sinh (không quan tâm ngày và tháng sinh).

(năm hiện tại là năm 2025)


Input 01:
3
John Doe
15 5 1980
1200000
1
Jane Smith
20 10 1985
900000
0
Alice Brown
5 3 1970
1500000
0
Output:
Employee list:
Name: John Doe, DOB: 15/5/1980, Salary: 1200000, Gender: Male
Name: Jane Smith, DOB: 20/10/1985, Salary: 900000, Gender: Female
Name: Alice Brown, DOB: 5/3/1970, Salary: 1500000, Gender: Female

Employees over 40 years old:
Name: John Doe, DOB: 15/5/1980, Salary: 1200000, Gender: Male
Name: Alice Brown, DOB: 5/3/1970, Salary: 1500000, Gender: Female

Number of employees with salary > 1,000,000: 2

Employees sorted by year of birth (descending):
Name: Jane Smith, DOB: 20/10/1985, Salary: 900000, Gender: Female
Name: John Doe, DOB: 15/5/1980, Salary: 1200000, Gender: Male
Name: Alice Brown, DOB: 5/3/1970, Salary: 1500000, Gender: Female

Struct mặt phẳng OXY

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Khai báo cấu trúc toạ độ các điểm trong mặt phẳng Oxy.

  • Nhập thông tin cho n điểm trong mặt phẳng Oxy, với n được nhập từ bàn phím.
  • Hiển thị danh sách các điểm có trong danh sách.
  • Liệt kê các toạ độ các điểm trong phần tư thứ I của mặt phẳng Oxy.
  • Tìm điểm có tung độ lớn nhất trong danh sách.
  • Viết hàm sắp xếp toạ độ các điểm giảm dần theo khoảng cách từ nó đến gốc toạ độ.

Input:
4
1 2
-3 4
5 -6
2 3
Output:
List of points:
(1.00, 2.00)
(-3.00, 4.00)
(5.00, -6.00)
(2.00, 3.00)

Points in the first quadrant:
(1.00, 2.00)
(2.00, 3.00)

Point with the largest y (ordinate): (-3.00, 4.00)

Points sorted by distance to origin (descending):
(5.00, -6.00)
(-3.00, 4.00)
(2.00, 3.00)
(1.00, 2.00)

Struct khách sạn

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Hãy khai báo cấu trúc phòng trong khách sạn (PHONG). Giả sử phòng khách sạn gồm những thành phần thông tin như sau:

+ Mã phòng: tối đa 5 ký tự.
+ Tên phòng: tối đa 30 ký tự.
+ Đơn giá thuê: kiểu số thực.
+ Số lượng giường: kiểu số nguyên.
+ Tình trạng phòng: 0 rảnh, 1 bận.
  • Nhập thông tin cho n phòng trong khách sạn, với n được nhập từ bàn phím.
  • Hiển thị thông tin các phòng có trong danh sách.
  • Liệt kê các phòng trống trong danh sách.
  • Tính tổng số lượng giường của các phòng có trong danh sách.
  • Sắp xếp các phòng theo giá thuê tăng dần.

Input:
3
P01
Deluxe Room
1200000
2
0
P02
Standard Room
800000
1
1
P03
VIP Suite
1500000
3
0
Output:
Room list:
Room Code: P01, Name: Deluxe Room, Price: 1200000.00, Beds: 2, Status: Available
Room Code: P02, Name: Standard Room, Price: 800000.00, Beds: 1, Status: Occupied
Room Code: P03, Name: VIP Suite, Price: 1500000.00, Beds: 3, Status: Available

Available rooms:
Room Code: P01, Name: Deluxe Room, Price: 1200000.00, Beds: 2, Status: Available
Room Code: P03, Name: VIP Suite, Price: 1500000.00, Beds: 3, Status: Available

Total number of beds: 6

Rooms sorted by price (ascending):
Room Code: P02, Name: Standard Room, Price: 800000.00, Beds: 1, Status: Occupied
Room Code: P01, Name: Deluxe Room, Price: 1200000.00, Beds: 2, Status: Available
Room Code: P03, Name: VIP Suite, Price: 1500000.00, Beds: 3, Status: Available