Bộ xử lý đa lõi
Đề bài
Mô tả
Một bộ xử lý đa lõi có lõi và ô nhớ cache. Bộ xử lý hoạt động trong chu kỳ.
Tại mỗi chu kỳ, mỗi lõi nhận được một lệnh: hoặc là không làm gì, hoặc là ghi thông tin vào một ô nhớ cụ thể. Lệnh được thực hiện ngay lập tức trong chu kỳ đó.
Đôi khi, trong cùng một chu kỳ, có nhiều hơn một lõi cùng cố gắng ghi vào cùng một ô nhớ. Khi đó xảy ra xung đột: tất cả các lõi đang ghi vào ô đó và chính ô nhớ đó đều bị khoá vĩnh viễn.
- Một lõi đã bị khoá sẽ bỏ qua mọi lệnh tiếp theo (kể cả lệnh "không làm gì").
- Một ô nhớ đã bị khoá sẽ không bao giờ có thể được ghi nữa. Nếu một lõi (chưa bị khoá) cố gắng ghi vào một ô nhớ đã bị khoá, lõi đó lập tức bị khoá ngay tại chu kỳ hiện tại.
Ban đầu, tất cả lõi và tất cả ô nhớ đều chưa bị khoá.
Với mỗi lõi, hãy xác định chu kỳ mà lõi đó bị khoá (hoặc nếu lõi không bao giờ bị khoá trong chu kỳ).
Dữ liệu vào
- Dòng đầu chứa ba số nguyên , , .
- dòng tiếp theo, mỗi dòng chứa số nguyên () — lệnh của lõi thứ tại chu kỳ thứ . Giá trị nghĩa là không làm gì; giá trị từ đến nghĩa là ghi vào ô nhớ tương ứng.
Dữ liệu ra
In ra dòng. Dòng thứ là chu kỳ mà lõi thứ bị khoá, hoặc nếu lõi đó không bao giờ bị khoá.
Ràng buộc
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 4 3 5 1 0 0 1 0 2 2 3 1 3 2 0 |
1 1 3 0 |
Chu kỳ 1: lõi 1 và lõi 2 cùng ghi vào ô 1 → cả hai bị khoá, ô 1 bị khoá. Chu kỳ 3: lõi 3 cố ghi vào ô 1 đã bị khoá → bị khoá. Lõi 4 không bao giờ ghi vào ô bị khoá. |
| 3 2 2 1 2 1 2 2 2 |
1 1 0 |
Chu kỳ 1: lõi 1 và 2 ghi vào ô 1 → cả hai bị khoá, ô 1 bị khoá. Lõi 3 chỉ ghi vào ô 2, không bị xung đột nên không bị khoá. |
| 1 1 1 0 |
0 | Lõi duy nhất không làm gì, không bị khoá. |
Bình luận