[Buổi 22][Củng cố bộ nhớ & chuỗi][ADV] Bài 1: Danh sách chuỗi co giãn thủ công
Danh sách chuỗi co giãn thủ công
Bối cảnh
Một danh sách chuỗi raw bắt đầu rỗng. Mỗi lần nhận record mới, nếu đầy thì capacity tăng gấp đôi bằng cách tự reallocate.
Đây là bài ADV mô phỏng một phần cách container động quản lý capacity. Không dùng vector cho phần lưu chính.
Yêu cầu
- Đọc n rồi n dòng.
- Ban đầu capacity=1, size=0,
string* a = new string[capacity]. - Khi size==capacity, cấp phát mảng mới capacity*2, copy, delete[] mảng cũ, chuyển pointer.
- Normalize spaces record rồi thêm vào.
- Sau cùng in
size capacity, rồi các record. - Cleanup.
Input
Dòng 1 n; n dòng.
Output
Dòng đầu size capacity; sau đó n dòng normalized.
Ràng buộc
0 ≤ n ≤ 1000, tổng chars≤100000.
Ví dụ 1
Input
3
a
b c
d
Output
3 4
a
b c
d
Giải thích
Với 3 phần tử, capacity đi 1→2→4 nên dòng đầu là 3 4.
Ví dụ 2
Input
0
Output
0 1
Giải thích
n=0 giữ capacity ban đầu 1 và size 0.
Thông tin học tập
- Module: M06
- Buổi: B22
- Loại bài: ADVANCED
- Độ khó: Hard
- Concepts: dynamic string arrays, reallocation, string normalization, ownership
- Giới hạn kiến thức: B01-B22
- Time limit: 2 second(s)
- Memory limit: 256 MB
- Point: 100
Comments