Pagini recente » Cod sursa (job #1690010) | Cod sursa (job #3220284) | Cod sursa (job #1860604) | Cod sursa (job #1225369) | Cod sursa (job #1205336)
#include <fstream>
using namespace std;
ifstream fin ("matrix.in");
ofstream fout ("matrix.out");
const int N = 1005, sigma = 26;
int sp[N][N], sum[sigma], m, n, sol;
char s[N][N];
bool ok[N][N];
char c;
int main() {
fin >> m >> n;
fin.get();
for (int i = 1; i <= m; ++i)
for (int j = 1; j <= m; ++j) {
fin >> s[i][j];
ok[i][j] = 1;
}
for (int i = 1; i <= n; ++i)
for (int j = 1; j <= n; ++j) {
fin >> c;
sum[c - 'a']++;
}
for (int ch = 0; ch < 26; ++ch)
for (int i = 1; i <= m; ++i)
for (int j = 1; j <= m; ++j) {
sp[i][j] = sp[i-1][j] + sp[i][j-1] - sp[i-1][j-1] + (ch + 'a' == s[i][j]);
if (i >= n && j >= n) {
ok[i][j] &= sp[i][j] - sp[i-n][j] - sp[i][j-n] + sp[i-n][j-n] == sum[ch];
if (ch == 25 && ok[i][j])
sol++;
}
}
fout << sol;
}