Cod sursă (job #546745)

Utilizator avatar gheorghita.pavel Gheorghita Pavel gheorghita.pavel IP ascuns
Problemă Fotografie (clasele 9-10) Compilator cpp | 1,72 kb
Rundă lasm_19_03_2020_cl_12_a Status evaluat
Dată 19 mar. 2020 17:15:20 Scor 0

#include <fstream>
#define hm 1000

using namespace std;

int main() {
  int k, contor, Rm[hm], nr, nl, nc, rm, cm, r, c, i, j, p, gasit;
  char a[hm][hm], mm[hm][hm];
  ifstream f("fotografie.in");
  ofstream g("fotografie.out");
  f >> nl >> nc;
  for (i = 1; i <= nl; i++) {
    for (j = 1; j <= nc; j++) {
      f >> a[i][j];
    }
  }
  f >> rm >> cm;
  for (i = 1; i <= rm; i++) {
    for (j = 1; j <= cm; j++) {
      f >> mm[i][j];
    }
  }
  f.close();
  r = 1;
  while (r <= rm) {
    c = 1;
    Rm[r] = 0;
    while (c <= cm) {
      Rm[r] = Rm[r] * 100 + (mm[r][c] - 87);
      c++;
    }
    r++;
  }
  i = 1;
  r = 1;
  while (i <= (nl - rm + 1)) {
    j = 1;
    while (j <= (nc - cm + 1)) {
      if ((i + 1 <= rm) && (j + 1 <= cm)) {
        if ((a[i][j] == mm[1][1]) && (a[i][j + 1] == mm[1][2]) &&
            (a[i + 1][j] == mm[2][1])) {
          contor = 0;
          nr = 0;
          while (contor <= cm - 1) {
            nr = nr * 100 + (a[i][j + contor] - 87);
            contor++;
          }
          if (nr == Rm[r]) {
            k = r + 1;
            gasit = 1;
            p = i + 1;
            while ((k <= rm) && (gasit) && (p <= nl)) {
              contor = 0;
              nr = 0;
              while (contor <= cm - 1) {
                nr = nr * 100 + (a[p][j + contor] - 87);
                contor++;
              }
              if (nr == Rm[k])
                gasit = 1;
              else
                gasit = 0;
              k++;
              p++;
            }

            if (p - i == rm) g << (i - 1) << " " << (j - 1) << endl;
          }
        }
      }
      j++;
    }
    i++;
  }
  g.close();
  return 0;
}