Pagini recente » Cod sursa (job #3275597) | Cod sursa (job #1756134) | Cod sursa (job #1227786) | Cod sursa (job #1387125) | Cod sursa (job #3166736)
#include <fstream>
#define letters 26
#define DIM 1001
using namespace std;
ifstream fin("matrix.in");
ofstream fout("matrix.out");
int n, m;
short int virus[letters];
short int sp[letters][DIM][DIM];
int sol;
char s;
int main()
{
fin >> n >> m;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
fin >> s;
for (int letter = 0; letter < letters; letter++) {
sp[letter][i][j] = sp[letter][i - 1][j] + sp[letter][i][j - 1] - sp[letter][i - 1][j - 1];
}
sp[s - 'a'][i][j]++;
}
}
for (int i = 1; i <= m; i++) {
for (int j = 1; j <= m; j++) {
fin >> s;
virus[s - 'a']++;
}
}
for (int i = m; i <= n; i++) {
for (int j = m; j <= n; j++) {
bool correct = true;
for (int letter = 0; letter < letters; letter++) {
int currentLetterCount = sp[letter][i][j] - sp[letter][i - m][j] - sp[letter][i][j - m] + sp[letter][i - m][j - m];
if (virus[letter] != currentLetterCount) {
correct = false;
break;
}
}
if (correct)
sol++;
}
}
fout << sol;
}