Pagini recente » Cod sursa (job #1221883) | Cod sursa (job #702429) | Cod sursa (job #1542749) | Cod sursa (job #863544) | Cod sursa (job #1409863)
#include<fstream>
using namespace std;
int n, m, i, j, ok1, ok2, L1, L2, C1, C2, ok;
pair<int, int> v1[501], v2[501];
int a1[501][501], a2[501][501];
ifstream fin("becuri.in");
ofstream fout("becuri.out");
int main(){
fin>> n >> m;
for(i = 1; i <= n; i++){
for(j = 1; j <= m; j++){
fin>> a1[i][j];
a2[i][j] = a1[i][j];
}
}
for(j = 1; j <= m; j++){
a1[1][j] = 1 - a1[1][j];
}
L1 = 1;
v1[1].first = 1;
for(j = 1; j <= m; j++){
if(a1[1][j] == 1){
C1++;
v1[C1].second = j;
for(i = 1; i <= n; i++){
a1[i][j] = 1- a1[i][j];
}
}
}
for(i = 2; i <= n; i++){
ok = 1;
for(j = 2; j <= m; j++){
if(a1[i][j] != a1[i][j-1]){
ok = 0;
break;
}
}
if(ok == 0){
ok1 = 1;
break;
}
else{
if(a1[i][1] == 1){
L1++;
v1[L1].first = i;
}
}
}
if(L1 % 2 != C1 % 2){
ok1 = 1;
}
for(j = 1; j <= m; j++){
if(a2[1][j] == 1){
C2++;
v2[C2].second = j;
for(i = 1; i <= n; i++){
a2[i][j] = 1- a2[i][j];
}
}
}
for(i = 2; i <= n; i++){
ok = 1;
for(j = 2; j <= m; j++){
if(a2[i][j] != a2[i][j-1]){
ok = 0;
break;
}
}
if(ok == 0){
ok2 = 1;
break;
}
else{
if(a2[i][1] == 1){
L2++;
v2[L2].first = i;
}
}
}
if(L2 % 2 != C2 % 2){
ok2 = 1;
}
if(ok1 == 1 && ok2 == 1){
fout<<"-1\n";
return 0;
}
if(ok1 == 0 && ok2 == 0){
if(max(L1, C1) < max(L2, C2)){
fout<< max(L1, C1) <<"\n";
for(i = 1; i <= min(L1, C1); i++){
fout<< v1[i].first <<" "<< v1[i].second <<"\n";
}
if(L1 < C1){
for(i = L1 + 1; i <= C1; i++){
fout<< v1[L1].first <<" "<< v1[i].second <<"\n";
}
}
else{
for(i = C1 + 1; i <= L1; i++){
fout<< v1[i].first <<" "<< v1[C1].second <<"\n";
}
}
}
else{
fout<< max(L2, C2) <<"\n";
for(i = 1; i <= min(L2, C2); i++){
fout<< v2[i].first <<" "<< v2[i].second <<"\n";
}
if(L2 < C2){
for(i = L2 + 1; i <= C2; i++){
fout<< v2[L2].first <<" "<< v2[i].second <<"\n";
}
}
else{
for(i = C2 + 1; i <= L2; i++){
fout<< v2[i].first <<" "<< v2[C1].second <<"\n";
}
}
}
}
else{
if(ok1 == 0){
fout<< max(L1, C1) <<"\n";
for(i = 1; i <= min(L1, C1); i++){
fout<< v1[i].first <<" "<< v1[i].second <<"\n";
}
if(L1 < C1){
for(i = L1 + 1; i <= C1; i++){
fout<< v1[L1].first <<" "<< v1[i].second <<"\n";
}
}
else{
for(i = C1 + 1; i <= L1; i++){
fout<< v1[i].first <<" "<< v1[C1].second <<"\n";
}
}
}
else{
fout<< max(L2, C2) <<"\n";
for(i = 1; i <= min(L2, C2); i++){
fout<< v2[i].first <<" "<< v2[i].second <<"\n";
}
if(L2 < C2){
for(i = L2 + 1; i <= C2; i++){
fout<< v2[L2].first <<" "<< v2[i].second <<"\n";
}
}
else{
for(i = C2 + 1; i <= L2; i++){
fout<< v2[i].first <<" "<< v2[C1].second <<"\n";
}
}
}
}
return 0;
}