Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- vector<string> superimpose(vector<string> &a, vector<string> &b) {
- int n = (int) a.size();
- vector<string> res(n, string(n, '.'));
- for (int i = 0; i < n; ++i) {
- for (int j = 0; j < n; ++j) {
- if (a[i][j] == '#' || b[i][j] == '#') {
- res[i][j] = (a[i][j] == b[i][j] ? '1' : '#');
- }
- }
- }
- return res;
- }
- bool shift(vector<string> &a, int v, int h) {
- int n = (int) a.size();
- vector<string> b(n, string(n, '.'));
- for (int i = 0; i < n; ++i) {
- for (int j = 0; j < n; ++j) {
- if (a[i][j] == '#') {
- if (i + v < 0 || i + v > n - 1 || j + h < 0 || j + h > n - 1) {
- return false;
- }
- b[i + v][j + h] = '#';
- }
- }
- }
- a = b;
- return true;
- }
- int main () {
- ios_base::sync_with_stdio(false);
- cin.tie(0);
- freopen("bcs.in", "r", stdin);
- freopen("bcs.out", "w", stdout);
- int n, K;
- cin >> n >> K;
- vector<string> a(n);
- for (int i = 0; i < n; ++i) {
- cin >> a[i];
- }
- vector<vector<string>> b(K, vector<string>(n));
- for (int i = 0; i < K; ++i) {
- for (int j = 0; j < n; ++j) {
- cin >> b[i][j];
- }
- }
- for (int i = 0; i < K; ++i) {
- for (int j = i + 1; j < K; ++j) {
- for (int k = -n; k < n; ++k) {
- for (int l = -n; l < n; ++l) {
- for (int q = -n; q < n; ++q) {
- for (int p = -n; p < n; ++p) {
- vector<string> c = b[i];
- vector<string> d = b[j];
- if (shift(c, k, l) && shift(d, q, p)) {
- vector<string> e = superimpose(c, d);
- if (e == a) {
- cout << i + 1 << " " << j + 1 << '\n';
- return 0;
- }
- }
- }
- }
- }
- }
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement