参考代码

发布时间 2023-03-26 16:02:50作者: kkidd
#include <bits/stdc++.h>
using namespace std;
vector<int> dx = {1, 0, -1, 0};
vector<int> dy = {0, 1, 0, -1};
int main(){
  int n, m, k;
  cin >> n >> m >> k;
  vector<vector<vector<char>>> c(k + 1, vector<vector<char>>(n, vector<char>(m)));
  for (int i = 0; i <= k; i++){
    for (int j = 0; j < n; j++){
      for (int l = 0; l < m; l++){
        cin >> c[i][j][l];
      }
    }
  }
  vector<int> cnt(k + 1, 0);
  for (int i = 0; i <= k; i++){
    for (int j = 1; j < n - 1; j++){
      for (int l = 1; l < m - 1; l++){
        for (int o = 0; o < 4; o++){
          int x = j + dx[o];
          int y = l + dy[o];
          if (c[i][j][l] != c[i][x][y]){
            cnt[i]++;
          }
        }
      }
    }
  }
  int p = 0;
  for (int i = 1; i <= k; i++){
    if (cnt[i] > cnt[p]){
      p = i;
    }
  }
  vector<int> cd(k + 1, 0);
  for (int i = 0; i <= k; i++){
    for (int j = 1; j < n - 1; j++){
      for (int l = 1; l < m - 1; l++){
        if (c[i][j][l] != c[p][j][l]){
          cd[i]++;
        }
      }
    }
  }
  vector<pair<int, int>> P;
  for (int i = 0; i <= k; i++){
    P.push_back(make_pair(cd[i], i));
  }
  sort(P.begin(), P.end());
  cout << p + 1 << endl;
  cout << P[k].first + k << endl;
  for (int i = 0; i < k; i++){
    for (int j = 1; j < n - 1; j++){
      for (int l = 1; l < m - 1; l++){
        if (c[P[i].second][j][l] != c[P[i + 1].second][j][l]){
          cout << "1 " << j + 1 << ' ' << l + 1 << endl;
        }
      }
    }
    cout << "2 " << P[i + 1].second + 1 << endl;
  }
}