Cod sursă (job #546211)

Utilizator avatar vcernea Cernea Victor vcernea IP ascuns
Problemă Fotografie (clasele 9-10) Compilator cpp | 1,50 kb
Rundă lasm_19_03_2020_cl_12_a Status evaluat
Dată 19 mar. 2020 15:57:54 Scor 20
#include <fstream>
#define GOD 1000

using namespace std;

int main() {
	int nl, nc, rm, cm, i, j, mihail, Rm[GOD], r, gasit, c, nr,
			God_matrix[GOD][GOD];
	// Iisuse miluieste - ma
	char a[GOD][GOD], mm[GOD][GOD];
	ifstream f("fotografie.in");
	ofstream g("fotografie.out");
	// In numele Tatalui si al Fiului si al Sfantului Duh Amin Acum si  pururea si
	// in vecii vecilor
	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++;
			}
			God_matrix[i][j] = nr;
			j++;
		}
		i++;
	}
	i = 1;
	while (i <= nl - rm + 1) {
		j = 1;
		while (j <= nc - cm + 1) {
			r = 1;
			if (God_matrix[i][j] == Rm[r]) {
				gasit = 1;
				mihail = i + 1;
				r++;
				while ((r <= rm) && (gasit) && (mihail <= nl)) {
					if (God_matrix[mihail][j] == Rm[r]) {
						gasit = 1;
						mihail++;
						r++;
					} else
						gasit = 0;
				}
				if (mihail - i == rm) {
					g << i - 1 << " " << j - 1 << endl;
				}
			}
			j++;
		}
		i++;
	}

	// Multumesc Doamne!
	// Doamne ajuta!
	f.close();
	g.close();
	return 0;
}