Pagini recente » Cod sursa (job #2365557) | Cod sursa (job #2906075) | Cod sursa (job #2470944) | Cod sursa (job #3184540) | Cod sursa (job #1827740)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("matrix.in");
ofstream fout("matrix.out");
const int nmax = 1005;
int N,M,ans,fr[30],s[nmax][nmax];
bool viz[nmax][nmax];
char a[nmax][nmax];
inline void Read()
{
int i,j;
char x;
fin >> M >> N;
for(i = 1; i <= M; i++)
fin >> (a[i]+1);
for(i = 1; i <= N; i++)
for(j = 1; j <= N; j++)
{
fin >> x;
fr[x-'a']++;
}
}
inline void Solve()
{
int i,j,k;
for(k = 0; k < 26; k++)
{
for(i = 0; i <= M; i++)
s[i][0] = s[0][i] = 0;
for(i = 1; i <= M; i++)
for(j = 1; j <= M; j++)
{
s[i][j] = s[i-1][j] + s[i][j-1] - s[i-1][j-1];
if(a[i][j] -'a' == k) ++s[i][j];
}
for(i = N; i <= M; i++)
for(j = N; j <= M; j++)
if(s[i][j] - s[i][j-N] - s[i-N][j] + s[i-N][j-N] != fr[k])
viz[i][j] = true;
}
for(i = 1; i <= M; i++)
for(j = 1; j <= M; j++)
if(!(i < N || j < N) && !viz[i][j])
++ans;
fout << ans << "\n";
}
int main()
{
Read();
Solve();
fout.close();
return 0;
}