Cod sursă (job #546772)

Utilizator avatar gheorghita.pavel Gheorghita Pavel gheorghita.pavel IP ascuns
Problemă Fotografie (clasele 9-10) Compilator cpp | 1,11 kb
Rundă lasm_19_03_2020_cl_12_a Status evaluat
Dată 19 mar. 2020 17:21:17 Scor 40
#include <fstream>
using namespace std;
ifstream f("fotografie.in");
ofstream g("fotografie.out");
int m, n, p, q, a[1001][1001], b[1001][1001];
int rv(char t) { return (int)t - 96; }
int verificare(int h, int g, int c, int d) {
  int x = 0, y = 0;
  for (int i = h; i <= c; i++) {
    x++;
    for (int j = g; j <= d; j++) {
      y++;
      if (a[i][j] != b[x][y]) return 0;
      if (y == q) y = 0;
    }
  }
  for (int i = h; i <= (c + h) / 2; i++)
    for (int j = g; j <= (d + g) / 2; j++) a[i][j] = 0;
  return 1;
}
int main() {
  f >> m >> n;
  f.get();
  for (int i = 1; i <= m; i++) {
    for (int j = 1; j <= n; j++) {
      char t;
      f >> t;
      a[i][j] = rv(t);
    }
    f.get();
  }
  f >> p >> q;
  f.get();
  for (int i = 1; i <= p; i++) {
    for (int j = 1; j <= q; j++) {
      char t;
      f >> t;
      b[i][j] = rv(t);
    }
    f.get();
  }
  for (int i = 1; i <= m; i++)
    for (int j = 1; j <= n; j++)
      if (a[i][j] == b[1][1])
        if (verificare(i, j, i + p - 1, j + q - 1) == 1)
          g << i - 1 << " " << j - 1 << "\n";
  
  return 0;
}