Đảo nửa sau của mảng bằng std::deque
Nhiều phép biến đổi mảng chỉ tác động lên một đoạn nằm ở cuối dãy. Nếu đoạn đó bắt đầu ở giữa
Tiến độ của tôi ở bài này
Điểm và code bạn nộp được lưu vào tài khoản sau khi chấm bài.
Đang tải điểm của bạn…
Kiến thức và chủ đề
Kiến thức tiên quyết: cpp-basics, arrays.
Nội dung đề bài
Mô tả bài toán
Nhiều phép biến đổi mảng chỉ tác động lên một đoạn nằm ở cuối dãy. Nếu đoạn đó bắt đầu ở giữa dãy thì ta cần một cấu trúc truy cập được cả hai đầu và mọi vị trí ở giữa, chẳng hạn std::deque, để đổi chỗ hai đầu đoạn rồi thu hẹp dần vào trong.
Yêu cầu
Cho một mảng gồm n số nguyên đánh số từ 1 đến n. Nửa sau của mảng gồm n / 2 phần tử cuối cùng (phép chia lấy phần nguyên). Hãy đảo ngược nửa sau đó tại chỗ và in ra mảng sau khi biến đổi. Khi n <= 3, nửa sau chỉ có 0 hoặc 1 phần tử nên mảng giữ nguyên.
Quy ước nộp bài
Nộp chương trình solution.cpp đọc dữ liệu từ stdin và in kết quả ra stdout. In đúng dãy số trên một dòng duy nhất, không in thêm chữ nào khác.
Input
- Dòng thứ nhất: số nguyên n là số phần tử (1 <= n <= 20).
- Dòng thứ hai: n số nguyên cách nhau bởi dấu cách (|giá trị| <= 10000).
Output
- Một dòng duy nhất chứa n số nguyên của mảng sau khi đảo nửa sau, cách nhau đúng một dấu
cách.
Ràng buộc
- 1 <= n <= 20, |giá trị| <= 10000.
- Nửa sau là các phần tử ở vị trí n / 2 + 1 đến n theo cách đánh số từ 1.
- Thời gian cho mỗi bộ dữ liệu là 1 giây.
Ví dụ 1
Input
5
1 2 3 4 5
Output
1 2 3 5 4
Ví dụ 2
Input
6
1 2 3 4 5 6
Output
1 2 3 6 5 4
Giải thích
Với dữ liệu vào:
n / 2 = 2, nửa sau là 4 5, đảo lại thành 5 4, nên kết quả là:
Với dữ liệu vào:
n / 2 = 3, nửa sau là 4 5 6, đảo lại thành 6 5 4, nên kết quả là:
Gợi ý và lời giải chỉ mở sau khi bạn bấm Nộp bài. Giáo viên và quản trị viên mở được ngay.
Góp ý & báo lỗi bài tập
Đề bài chưa rõ, test có vấn đề hay bạn có ý tưởng giúp bài tốt hơn? Gửi cho đội ngũ AI Empire nhé — mỗi góp ý đều được đọc.
