Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define _CRT_SECURE_NO_WARNINGS
- #pragma comment(linker, "/STACK:256000000")
- #include <iostream>
- #include <cstdio>
- #include <cmath>
- #include <cstdlib>
- #include <algorithm>
- #include <vector>
- #include <set>
- #include <map>
- #include <bitset>
- #include <sstream>
- #include <fstream>
- #include <ctime>
- using namespace std;
- typedef long long ll;
- typedef long double ld;
- #define TASK ""
- int solve();
- int main() {
- #ifdef HOME
- freopen("input.txt", "r", stdin), freopen("output.txt", "w", stdout);
- #else
- //freopen(TASK".in", "r", stdin), freopen(TASK".out", "w", stdout);
- #endif
- solve();
- }
- int n1, m1, n2, m2;
- string A[307], B[307];
- int d1[307], d2[307];
- int solve() {
- cin >> n1 >> m1;
- for (int i = 0; i < n1; i++)
- cin >> A[i];
- cin >> n2 >> m2;
- for (int i = 0; i < n2; i++)
- cin >> B[i];
- for (int j = 0; j < m1; j++) {
- d1[j] = (int)1e9;
- }
- for (int j = 0; j < m2; j++) {
- d2[j] = (int)1e9;
- }
- for (int i = 0; i < n1; i++) {
- for (int j = 0; j < m1; j++) {
- if (A[i][j] == '*') {
- d1[j] = (n1 - 1 - i);
- }
- }
- }
- for (int i = n2 - 1; i >= 0; i--) {
- for (int j = 0; j < m2; j++) {
- if (B[i][j] == '#') {
- d2[j] = i;
- }
- }
- }
- int ans = 0;
- for (int dj = -301; dj <= 301; dj++) {
- int h = (int)1e9;
- for (int j = 0; j < m1; j++) {
- if (j + dj >= 0 && j + dj < m2) {
- h = min(h, d1[j] + d2[j + dj]);
- }
- }
- if (h == (int)1e9)
- continue;
- int cur = 0;
- for (int i = 0; i < n1; i++) {
- for (int j = -1; j + 1 < m1; j++) {
- if (i + h - n1 < n2 && i + h - n1 >= 0 && j + dj >= 0 && j + dj < m2 && A[i][j + 1] == '*' && B[i + h - n1][j + dj] == '#')
- cur++;
- }
- }
- ans = max(ans, cur);
- }
- cout << ans;
- return 0;
- }
Add Comment
Please, Sign In to add comment