Pagini recente » Cod sursa (job #2681264) | Cod sursa (job #257979) | Cod sursa (job #2046089) | Cod sursa (job #1762421) | Cod sursa (job #183857)
Cod sursa(job #183857)
#include<cstdio>
#include<cstring>
int n,m,nr[26],a[1001][1001],i,j,k,NR;
char good[1001][1001],A[1001][1001],B[1001];
int main()
{
freopen("matrix.in","r",stdin);
freopen("matrix.out","w",stdout);
scanf("%d %d ",&n,&m);
for(i=1;i<=n;i++)
gets(A[i]);
for(i=1;i<=m;i++)
{
gets(B);
for(j=0;j<m;j++)
nr[B[j]-'a']++;
}
memset(good,1,sizeof(good));
for(k=0;k<26;k++)
{
char c=k+'a';
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{
a[i][j]=a[i-1][j]+a[i][j-1]-a[i-1][j-1];
if(A[i][j-1]==c) a[i][j]++;
if(i>=m && j>=m && (a[i][j]-a[i-m][j]-a[i][j-m]+a[i-m][j-m])!=nr[k]) good[i][j]=0;
}
}
for(i=m;i<=n;i++)
for(j=m;j<=n;j++)
if(good[i][j]) NR++;
printf("%d\n",NR);
fclose(stdout);
return 0;
}