FLIPROW - Phép đảo

Xem dạng PDF

Gửi bài giải

Điểm: 2,00 (OI)
Giới hạn thời gian: 2.0s
Giới hạn bộ nhớ: 256M
Input: stdin
Output: stdout

Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C#, C++, Go, Java, Pascal, Perl, PHP, Python, Ruby, Rust, Scratch, Swift

Cho một bảng số gồm N dòng và M cột. Các dòng được đánh số từ 1 đến N từ trên xuống dưới.Các cột được đánh số từ 1 đến M từ trái sang phải. Giao của dòng i và cột j được gọi là ô (i, j).Ta định nghĩa phép đảo dòng i là phép biến đổi được thực hiện trên dòng i, thực hiện thao tác:với mỗi j từ 1 đến ~ | M / 2 | ~, ta hoán đổi vị trí của cặp phần tử (i, j) và (i, M - j + 1)Hãy xác định rằng có thể thực hiện một số phép đảo dòng sao cho các số trên mỗi cột đều khác nhau hay không. Nếu có, hãy in ra chỉ số của các dòng cần thực hiện phép đảo.

Input

• Dòng đầu tiên gồm số hai nguyên N (1 ≤ N, M ≤ 1000) - số dòng và số cột của bảng số.

• N dòng tiếp theo, mỗi dòng gồm M số nguyên dương không vượt quá ~ 10^9 ~ mô tả bảng số.

Output

• Nếu không có cách đảo dòng thì in ra "No".

• Ngược lại:

– Dòng đầu tiên in ra "Yes".

– Dòng thứ hai in ra K (K ≤ 3000), số dòng cần thực hiện phép đảo.

– Dòng thứ ba in ra K số nguyên - chỉ số của các dòng cần thực hiện phép đảo.

• Trong trường hợp có nhiều đáp án đúng thì bất kì đáp án đúng nào đều được chấp nhận.

Sample

Input #1
4 5
1 8 9 3 4
1 5 1 3 4
3 4 2 4 3
2 1 7 5 2
Output #1
Yes
2
2 4
Input #2
2 3
1 2 3
4 5 6
Output #2
Yes
0
Input #3
2 2
1 1
1 1
Output #3
No

Problem source: Free Contest Cup 2018


Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.