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