Pagini recente » Cod sursa (job #2051968) | Cod sursa (job #1697709) | Cod sursa (job #1192975) | brasov_15 | Cod sursa (job #1249348)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("matrix.in");
ofstream fout("matrix.out");
#define MAX 1002
#define sigma 26
char a[MAX][MAX], x, c[MAX][MAX];
int b[MAX][MAX], fr[sigma];
int main()
{
int n, m, i, j, k;
fin>>m>>n;
for(i=1;i<=m;i++)
{
for(j=1;j<=m;j++)
{
fin>>x;
a[i][j]=x-'a';
}
}
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
fin>>x;
fr[x-'a']++;
}
}
for(k=0;k<26;k++)
{
for(i=1;i<=m;i++)
{
for(j=1;j<=m;j++)
{
b[i][j]=b[i-1][j]+b[i][j-1]-b[i-1][j-1]+(a[i][j]==k);
if(i>=n && j>=n && b[i][j]-b[i-n][j]-b[i][j-n]+b[i-n][j-n]==fr[k])
{
c[i][j]++;
}
}
}
}
int s=0;
for(i=1;i<=m;i++)
{
for(j=1;j<=m;j++)
{
if(c[i][j]==26)
s++;
}
}
fout << s << "\n";
}