Cơn Ác Mộng Euclid
Nộp bài giải
Điểm:
7,00 (OI)
Giới hạn thời gian:
2.0s
Giới hạn bộ nhớ:
256M
Đầu vào:
stdin
Đầu ra:
stdout
Dạng bài
Ngôn ngữ cho phép
Ada, Algol, Assembly, Awk, C, C#, C++, D, Dart, Forth, Fortran, Go, Groovy, Java, Javascript, Kotlin, Lisp, Lua, Nim, ObjC, Pascal, Perl, PHP, Pike, Python, Racket, Ruby, Rust, Scheme, Scratch, Sed, TCL, Typescript, V, Zig
Cho một tập gồm vectơ trên trường với chiều. Mỗi vectơ có tọa độ, mỗi tọa độ bằng hoặc . Phép cộng hai vectơ được định nghĩa .
Bạn được cộng tùy ý một tập con của (kể cả tập rỗng — kết quả là vectơ ). Gọi là tập tất cả các vectơ có thể tạo được bằng cách cộng một tập con nào đó của .
Mỗi vectơ trong có không quá 2 tọa độ bằng 1.
Hãy tính:
- theo modulo .
- Một tập con có kích thước nhỏ nhất sao cho mọi vectơ trong vẫn có thể tạo được bằng cách cộng các vectơ trong .
Nếu có nhiều tập kích thước nhỏ nhất, hãy chọn tập có dãy chỉ số nhỏ nhất theo thứ tự từ điển. So sánh hai tập có cùng kích thước: viết các chỉ số phần tử theo thứ tự tăng dần thành dãy và ; nhỏ hơn về thứ tự từ điển nếu tồn tại sao cho với mọi và .
Dữ liệu vào
- Dòng đầu tiên chứa hai số nguyên , .
- dòng tiếp theo mô tả các vectơ. Mỗi dòng bắt đầu bằng số nguyên (), tiếp theo là số nguyên phân biệt (), biểu diễn vectơ có giá trị tại các tọa độ và ở các vị trí còn lại.
Không có hai vectơ nào trong trùng nhau.
Dữ liệu ra
- Dòng đầu tiên in hai số: và .
- Dòng thứ hai in chỉ số của các phần tử trong theo thứ tự tăng dần (đánh số từ theo thứ tự đầu vào).
Ràng buộc
- .
- .
- .
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 3 2 1 1 1 2 2 2 1 |
4 2 1 2 |
Ba vectơ là , , . Vì , vectơ thứ ba phụ thuộc vào hai vectơ đầu. Không gian sinh có phần tử. Chọn — kích thước tối thiểu, thứ tự từ điển nhỏ nhất. |
| 2 3 2 1 3 2 1 2 |
4 2 1 2 |
Hai vectơ và đều độc lập, sinh ra không gian phần tử. |
| 3 5 2 1 2 1 3 1 4 |
8 3 1 2 3 |
Ba vectơ độc lập, sinh ra không gian phần tử. Chỉ số . |
Bình luận