#CCBCHBAHAI0000121. Mảng không thể gán toàn bộ bằng dấu = (Whole-Array Assignment Is Not Allowed)
Mảng không thể gán toàn bộ bằng dấu = (Whole-Array Assignment Is Not Allowed)
Mảng không thể gán toàn bộ bằng dấu = (Whole-Array Assignment Is Not Allowed)
Nguồn: C Primer Plus
Phiên bản: Phước Hưng OJ Extended
Đề bài
Trong C, một mảng thực sự (array object) không phải là một giá trị có thể được gán toàn bộ bằng toán tử = sau khi đã khai báo. Nếu a và b là hai mảng có cùng kích thước thì câu lệnh dạng a = b; là không hợp lệ. Ngược lại, một phần tử riêng lẻ như là một đối tượng số nguyên bình thường và có thể được gán giá trị. Nếu cần sao chép toàn bộ nội dung của b sang a, ta phải sao chép từng phần tử hoặc dùng một thao tác thư viện phù hợp.
Bài toán mô phỏng ba loại thao tác trên hai mảng số nguyên và , mỗi mảng có phần tử, đánh số từ đến :
- Loại
1 i x: phép gán phần tử . Phép gán này hợp lệ và làm thay đổi . - Loại
2: biểu diễn ý định dùng phép gán toàn mảngA = B. Phép gán này không hợp lệ trong C và không làm thay đổi dữ liệu mô phỏng. - Loại
3: sao chép từng phần tử của sang , tức là sau thao tác ta có với mọi . Thao tác này hợp lệ.
Với mỗi thao tác, hãy in kết luận về tính hợp lệ. Sau khi xử lý hết các thao tác, in trạng thái cuối cùng của mảng .
Input
- Dòng đầu chứa số nguyên .
- Dòng thứ hai chứa số nguyên .
- Dòng thứ ba chứa số nguyên .
- Dòng thứ tư chứa số nguyên .
- Mỗi trong dòng tiếp theo mô tả một thao tác theo một trong ba dạng
1 i x,2hoặc3. Với thao tác loại1, chỉ số luôn thỏa .
Output
Với mỗi thao tác, in một dòng:
VALIDnếu thao tác là phép gán phần tử hoặc sao chép từng phần tử;INVALID_ARRAY_ASSIGNMENTnếu thao tác biểu diễnA = B.
Sau dòng kết luận, in một dòng A = a0 a1 ... a(n-1) chứa trạng thái cuối cùng của .
Subtask
Subtask 1 (100 điểm): , , .
Ví dụ
Input
4
1 2 3 4
10 20 30 40
4
1 2 99
2
3
1 0 -5
Output
VALID
INVALID_ARRAY_ASSIGNMENT
VALID
VALID
A = -5 20 30 40
Giải thích
Ban đầu và .
Thao tác 1 2 99 gán riêng phần tử chỉ số , nên hợp lệ và trở thành .
Thao tác 2 biểu diễn A = B. Đây là phép gán toàn mảng, không hợp lệ trong C, nên mảng mô phỏng không đổi.
Thao tác 3 sao chép từng phần tử của sang , vì vậy hợp lệ và .
Cuối cùng 1 0 -5 gán . Do đó trạng thái cuối là .