Pagini recente » Cod sursa (job #2565058) | Cod sursa (job #1258889) | Cod sursa (job #960239) | Cod sursa (job #1054429) | Cod sursa (job #2287251)
#include <fstream>
using namespace std;
ifstream fin("matrix.in");
ofstream fout("matrix.out");
int frMat[1005][1005][28], fr[28];
int main()
{
int m, n;
fin >> m >> n;
fin.get();
for(int i = 1; i <= m; ++i)
{
for(int j = 1; j <= m; ++j)
{
char ch;
fin >> ch;
for(int k = 0; k <= 26; ++k)
frMat[i][j][k] = frMat[i][j - 1][k] + frMat[i - 1][j][k] - frMat[i - 1][j - 1][k];
frMat[i][j][(int)(ch - 'a')]++;
}
}
for(int i = 1; i <= n; ++i)
for(int i = 1; i <= n; ++i)
{
char ch;
fin >> ch;
fr[ch - 'a']++;
}
int rez = 0;
for(int i = n; i <= m; ++i)
for(int j = n; j <= m; ++j)
{
bool ok = 1;
for(int k = 0; k <= 26; ++k)
if(frMat[i][j][k] - frMat[i][j - n][k] - frMat[i - n][j][k] + frMat[i - n][j - n][k] != fr[k]){
ok = 0;
break;
}
if(ok)
++rez;
}
fout << rez << '\n';
return 0;
}