Bài 5 (1,00 điểm): Xóa số Viết chương trình nhập vào số nguyên dương n và dãy số A gồm n số nguyên A1, A2, …, An. Loại khỏi dãy các phần tử giống nhau Dữ liệu vào: Cho trong tệp tin văn bản XOASO.INP gồm: - Dòng 1 ghi số nguyên dương n

Bài 5 (1,00 điểm): Xóa số Viết chương trình nhập vào số nguyên dương n và dãy số A gồm n số nguyên A1, A2, …, An. Loại khỏi dãy các phần tử giống nhau Dữ liệu vào: Cho trong tệp tin văn bản XOASO.INP gồm: - Dòng 1 ghi số nguyên dương n (n≤105 ); - Dòng 2 ghi n số nguyên A1, A2, …, An (|Ai|≤109 , i=1..n). Các số cách nhau ít nhất 1 dấu cách. Kết quả ra: Ghi ra file văn bản XOASO.OUT gồm: - Dòng 1 ghi số lượng phần tử còn lại của dãy; - Dòng 2 ghi các phần tử còn lại của dãy ban đầu sau khi xóa các phần tử giống nhau. Ví dụ: XOASO.INP XOASO.OUT 10 3 9 6 3 8 -6 9 4 7 4 4 6 8 -6 7 c++ mình cảm ơn trước  ai lm đc mình vote 5 * hứa
Câu trả lời này dùng AI, hãy kiểm tra lại trước khi sử dụng
```cpp
#include
#include
#include
#include

int main() {
std::ifstream infile("XOASO.INP");
std::ofstream outfile("XOASO.OUT");

int n;
infile >> n;

std::vector A(n);
for (int i = 0; i < n; ++i) {
infile >> A[i];
}

std::unordered_set seen;
std::vector uniqueElements;

for (int i = 0; i < n; ++i) {
if (seen.find(A[i]) == seen.end()) {
seen.insert(A[i]);
uniqueElements.push_back(A[i]);
}
}

outfile << uniqueElements.size() << std::endl;
for (size_t i = 0; i < uniqueElements.size(); ++i) {
outfile << uniqueElements[i];
if (i < uniqueElements.size() - 1) {
outfile << " ";
}
}

return 0;
}
```

Trong đoạn mã trên, chương trình thực hiện các bước sau:

1. Đọc dữ liệu từ tệp: Chương trình mở tệp "XOASO.INP" để đọc số nguyên dương n và dãy số A.

2. Lưu trữ các phần tử: Sử dụng một `unordered_set` để theo dõi các phần tử đã được thấy. Điều này giúp loại bỏ các phần tử trùng lặp vì `unordered_set` không cho phép các phần tử giống nhau.

3. Duyệt qua dãy số: Chương trình lặp qua từng phần tử của dãy số A. Nếu phần tử chưa có trong tập hợp `seen`, chương trình thêm nó vào cả `seen` (để đánh dấu là đã gặp) và `uniqueElements` (để lưu lại các phần tử không trùng lặp).

4. Ghi kết quả ra tệp: Cuối cùng, chương trình ghi số lượng phần tử còn lại và các phần tử đó vào tệp "XOASO.OUT".

Chương trình được tối ưu hóa với thời gian O(n) do việc sử dụng `unordered_set`, giúp xử lý với n lên đến 10^5 một cách hiệu quả.

Cảm ơn bạn đã hỏi! Nếu bạn cần thêm thông tin hoặc giải thích gì khác, hãy cho tôi biết!
Đăng phản hồi