Cod sursă (job #546762)

Utilizator avatar gheorghita.pavel Gheorghita Pavel gheorghita.pavel IP ascuns
Problemă Fotografie (clasele 9-10) Compilator cpp | 1,46 kb
Rundă lasm_19_03_2020_cl_12_a Status evaluat
Dată 19 mar. 2020 17:18:20 Scor 20
#include <fstream>
#define hm 1000

using namespace std;

int main() {
  int nl, nc, rm, cm, i, j, mihail, Rm[hm], r, gasit, c, nr,
      hm_matrix[hm][hm];
  
  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];
  }

  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;
  while (i <= nl) {
    j = 1;
    while (j <= nc - cm + 1) {
      mihail = 0;
      nr = 0;
      while (mihail <= cm - 1) {
        nr = nr * 100 + (a[i][j + mihail] - 87);
        mihail++;
      }
      hm_matrix[i][j] = nr;
      j++;
    }
    i++;
  }
  i = 1;
  while (i <= nl - rm + 1) {
    j = 1;
    while (j <= nc - cm + 1) {
      r = 1;
      if (hm_matrix[i][j] == Rm[r]) {
        gasit = 1;
        mihail = i + 1;
        r++;
        while ((r <= rm) && (gasit) && (mihail <= nl)) {
          if (hm_matrix[mihail][j] == Rm[r]) {
            gasit = 1;
            mihail++;
            r++;
          } else
            gasit = 0;
        }
        if (mihail - i == rm) {
          g << i - 1 << " " << j - 1 << endl;
        }
      }
      j++;
    }
    i++;
  }

 
  return 0;
}