Pagini recente » Cod sursa (job #2946923) | Cod sursa (job #2705641) | Cod sursa (job #2302420) | Cod sursa (job #3232398) | Cod sursa (job #2794627)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("matrix.in");
ofstream fout ("matrix.out");
int s[1002][1002], sp[1002][1002], n ,m;
int A , B;
int main()
{
int i , j, c;
char w[1002];
fin >> n >> m;
for (i = 1; i <= n; i++)
{
fin >> (w + 1);
for (j = 1; j <= n; j++)
{
c = (w[j] - 'a' + 1);
s[i][j] = s[i][j - 1] + s[i - 1][j] - s[i - 1][j - 1] + c;
sp[i][j] = sp[i][j - 1] + sp[i - 1][j] - sp[i - 1][j - 1] + c * c;
}
}
for (i = 1; i <= m; i++)
{
fin >> (w + 1);
for (j = 1; j <= m; j++)
{
c = w[j] - 'a' + 1;
A = A + c;
B = B + c * c;
}
}
int cnt = 0;
for (int i = m; i <= n; i++)
for (int j = m; j <= n; j++)
{
int s1 = s[i][j] - s[i][j - m] - s[i - m][j] + s[i - m][j - m];
int s2 = sp[i][j] - sp[i][j - m] - sp[i - m][j] + sp[i - m][j - m];
if (s1 == A && s2 == B)
cnt++;
}
fout << cnt << "\n";
return 0;
}