Pagini recente » Cod sursa (job #1237891) | Cod sursa (job #2536554) | Cod sursa (job #2218063) | Cod sursa (job #366046) | Cod sursa (job #2293732)
#include <fstream>
#include <cstring>
using namespace std;
ifstream fin("matrix.in");
ofstream fout("matrix.out");
int N, M, ans;
int a[1005][1005];
char s[1005][1005];
char ss[1005][1005];
bool isOk[1005][1005];
int main()
{
fin >> M >> N;
for(int i = 1; i <= M; i++)
for(int j = 1; j <= M; j++)
fin >> s[i][j];
for(int i = 1; i <= N; i++)
for(int j = 1; j <= N; j++)
fin >> ss[i][j];
for(int sigma = 0; sigma <= 'z' - 'a'; sigma++)
{
int currentCharCount = 0;
for(int i = 1; i <= N; i++)
for(int j = 1; j <= N; j++)
if(ss[i][j] - 'a' == sigma)
currentCharCount++;
memset(a, 0, sizeof(a));
for(int i = 1; i <= M; i++)
for(int j = 1; j <= M; j++)
if(s[i][j] - 'a' == sigma)
a[i][j]++;
for(int i = 1; i <= M; i++)
for(int j = 1; j <= M; j++)
a[i][j] = a[i][j] + a[i - 1][j] + a[i][j - 1] - a[i - 1][j - 1];
for(int i = N; i <= M; i++)
for(int j = N; j <= M; j++)
if(a[i][j] - a[i - N][j] - a[i][j - N] + a[i - N][j - N] != currentCharCount)
isOk[i][j] = true;
}
for(int i = N; i <= M; i++)
for(int j = N; j <= M; j++)
if(isOk[i][j] == false)
ans++;
fout << ans;
return 0;
}