#include<bits/stdc++.h>
using namespace std;
#define task "a"
#define se second
#define fi first
#define ll long long
#define ii pair<ll, ll>
const long mxN = 1e3 + 7;
int nRow, nCol;
string s[mxN], f[3];
vector<char> chr = {'J', 'O', 'I'};
bool cmp(int i, int j)
{
if (i < 0 || j < 0)
return 0;
int iden = 0;
for (int u = 0; u <= 1; u++)
{
for (int v = 0; v <= 1; v++)
iden += (f[u][v] == s[i + u][j + v]);
}
return iden == 4;
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
//freopen(task".INP", "r", stdin);
//freopen(task".OUT", "w", stdout);
cin >> nRow >> nCol;
for (int i = 0; i < nRow; i++)
cin >> s[i];
cin >> f[0];
cin >> f[1];
int cnt = 0;
for (int i = 0; i < nRow - 1; i++)
{
for (int j = 0; j < nCol - 1; j++)
cnt += cmp(i, j);
}
int ans = cnt;
for (int i = 0; i < nRow; i++)
{
for (int j = 0; j < nCol; j++)
{
char mem = s[i][j];
int down = 0;
for (int u = -1; u <= 0; u++)
{
for (int v = -1; v <= 0; v++)
down += cmp(i + u, j + v);
}
for (char nw : chr)
{
s[i][j] = nw;
int up = 0;
for (int u = -1; u <= 0; u++)
{
for (int v = -1; v <= 0; v++)
up += cmp(i + u, j + v);
}
ans = max(ans, cnt - down + up);
}
s[i][j] = mem;
}
}
cout << ans;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |