Pagini recente » Cod sursa (job #873644) | Cod sursa (job #1021678) | Cod sursa (job #1386219) | Cod sursa (job #521492) | Cod sursa (job #3197958)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("matrix.in");
ofstream fout("matrix.out");
int n, m, i, j, fr[1002], d[1002][1002], r;
char c, a[1002][1002];
bool ok[1002][1002];
int main() {
fin >> n >> m;
for(i = 1; i <= n; i++) {
for(j = 1; j <= n; j++) fin >> a[i][j];
}
for(i = 1; i <= m; i++) {
for(j = 1; j <= m; j++) {
fin >> c;
fr[c - 'a']++;
}
}
memset(ok, true, sizeof(ok));
for(c = 'a'; c <= 'z'; c++) {
for(i = 1; i <= n; i++) {
for(j = 1; j <= n; j++) {
d[i][j] = d[i - 1][j] + d[i][j - 1] - d[i - 1][j - 1] + (a[i][j] == c);
}
}
for(i = m; i <= n; i++) {
for(j = m; j <= n; j++) {
if(d[i][j] - d[i][j - m] - d[i - m][j] + d[i - m][j - m] != fr[c - 'a']) ok[i][j] = false;
}
}
}
for(i = m; i <= n; i++) {
for(j = m; j <= n; j++) r += ok[i][j];
}
fout << r;
return 0;
}