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