Guest User

Untitled

a guest
Oct 25th, 2016
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.02 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #pragma comment(linker, "/STACK:256000000")
  3. #include <iostream>
  4. #include <cstdio>
  5. #include <cmath>
  6. #include <cstdlib>
  7. #include <algorithm>
  8. #include <vector>
  9. #include <set>
  10. #include <map>
  11. #include <bitset>
  12. #include <sstream>
  13. #include <fstream>
  14. #include <ctime>
  15.  
  16. using namespace std;
  17.  
  18. typedef long long ll;
  19. typedef long double ld;
  20.  
  21. #define TASK ""
  22.  
  23. int solve();
  24.  
  25. int main() {
  26. #ifdef HOME
  27.     freopen("input.txt", "r", stdin), freopen("output.txt", "w", stdout);
  28. #else
  29.     //freopen(TASK".in", "r", stdin), freopen(TASK".out", "w", stdout);
  30. #endif
  31.     solve();
  32. }
  33.  
  34. int n1, m1, n2, m2;
  35. string A[307], B[307];
  36. int d1[307], d2[307];
  37.  
  38. int solve() {
  39.     cin >> n1 >> m1;
  40.     for (int i = 0; i < n1; i++)
  41.         cin >> A[i];
  42.     cin >> n2 >> m2;
  43.     for (int i = 0; i < n2; i++)
  44.         cin >> B[i];
  45.  
  46.     for (int j = 0; j < m1; j++) {
  47.         d1[j] = (int)1e9;
  48.     }
  49.     for (int j = 0; j < m2; j++) {
  50.         d2[j] = (int)1e9;
  51.     }
  52.  
  53.     for (int i = 0; i < n1; i++) {
  54.         for (int j = 0; j < m1; j++) {
  55.             if (A[i][j] == '*') {
  56.                 d1[j] = (n1 - 1 - i);
  57.             }
  58.         }
  59.     }
  60.  
  61.     for (int i = n2 - 1; i >= 0; i--) {
  62.         for (int j = 0; j < m2; j++) {
  63.             if (B[i][j] == '#') {
  64.                 d2[j] = i;
  65.             }
  66.         }
  67.     }
  68.     int ans = 0;
  69.     for (int dj = -301; dj <= 301; dj++) {
  70.  
  71.  
  72.         int h = (int)1e9;
  73.         for (int j = 0; j < m1; j++) {
  74.             if (j + dj >= 0 && j + dj < m2) {
  75.                 h = min(h, d1[j] + d2[j + dj]);
  76.             }
  77.         }
  78.         if (h == (int)1e9)
  79.             continue;
  80.  
  81.         int cur = 0;
  82.         for (int i = 0; i < n1; i++) {
  83.             for (int j = -1; j + 1 < m1; j++) {
  84.                 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] == '#')
  85.                     cur++;
  86.             }
  87.         }
  88.         ans = max(ans, cur);
  89.     }
  90.     cout << ans;
  91.     return 0;
  92. }
Add Comment
Please, Sign In to add comment