#include<bits/stdc++.h>
using namespace std;
using ll = long long;
ll a[1002][1002], b[5];
ll to_numb[257] = {0};
int main() {
ll n, m, r, x, y, i, j,cnt1,cnt, ans, t,s;
cin >> n >> m;
to_numb['J'] = 1;
to_numb['O'] = 2;
to_numb['I'] = 3;
string str;
for (i = 1; i <= n; i ++) {
cin >> str;
for (j = 1; j <= m; j ++) {
a[i][j] = to_numb[str[j- 1]];
}
}
cin >> str;
b[0] = to_numb[str[0]];
b[1] = to_numb[str[1]];
cin >> str;
b[2] = to_numb[str[0]];
b[3] = to_numb[str[1]];
cnt = 0;
for (i = 1; i < n; i ++) {
for (j = 1; j < m; j++) {
if ( a[i][j] == b[0] && a[i][j + 1] == b[1] && a[i + 1][j] == b[2] && a[i + 1][j + 1] == b[3]) cnt ++;
}
}
ans =cnt;
for (i = 1; i <= n; i ++) {
for (j = 1; j <= m; j ++) {
cnt1 = cnt;
x = a[i][j];
if ( a[i - 1][j - 1] == b[0] && a[i -1][j] == b[1] && a[i][j - 1] == b[2] && a[i][j] == b[3]) cnt1 --;
if ( a[i - 1][j] == b[0] && a[i -1][j + 1] == b[1] && a[i][j] == b[2] && a[i][j + 1] == b[3]) cnt1 --;
if ( a[i][j - 1] == b[0] && a[i][j] == b[1] && a[i + 1][j - 1] == b[2] && a[i + 1][j] == b[3]) cnt1 --;
if ( a[i][j] == b[0] && a[i][j + 1] == b[1] && a[i + 1][j ] == b[2] && a[i + 1][j + 1] == b[3]) cnt1 --;
for ( r = 1; r <= 3; r ++) {
s =cnt1;
a[i][j] = r;
if ( a[i - 1][j - 1] == b[0] && a[i -1][j] == b[1] && a[i][j - 1] == b[2] && a[i][j] == b[3]) s ++;
if ( a[i - 1][j] == b[0] && a[i -1][j + 1] == b[1] && a[i][j] == b[2] && a[i][j + 1] == b[3]) s ++;
if ( a[i][j - 1] == b[0] && a[i][j] == b[1] && a[i + 1][j - 1] == b[2] && a[i + 1][j] == b[3]) s ++;
if ( a[i][j] == b[0] && a[i][j + 1] == b[1] && a[i + 1][j ] == b[2] && a[i + 1][j + 1] == b[3]) s ++;
ans = max(ans, s);
}
a[i][j] =x;
ans = max(ans, s);
}
}
cout << ans << endl;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |