Pagini recente » Cod sursa (job #2639461) | Cod sursa (job #3214726) | Cod sursa (job #2989333) | Cod sursa (job #115233) | Cod sursa (job #2644097)
#include <iostream>
#include <stdio.h>
#include <string.h>
#define NMAX 1003
using namespace std;
int n,m,i,j,s,lit;
int x[NMAX][NMAX],v[NMAX],ok[NMAX][NMAX];
char a[NMAX][NMAX],b[NMAX][NMAX],c;
int main()
{
freopen("matrix.in","r",stdin);
freopen("matrix.out","w",stdout);
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++)
for(j=1;j<=n;j++){
scanf(" %c",&a[i][j]);
}
for(i=1;i<=m;i++){
for(j=0;j<=m;j++){
scanf(" %c",&b[i][j]);
if(b[i][j]!='\n' && b[i][j]!=NULL)v[b[i][j]]++;
}
}
for(lit=97;lit<=122;lit++){
for(i=1;i<=n;i++)
for(j=1;j<=n;j++){
if(a[i][j]==(char)lit)
x[i][j]=x[i-1][j]+x[i][j-1]-x[i-1][j-1]+1;
else
x[i][j]=x[i-1][j]+x[i][j-1]-x[i-1][j-1];
}
for(i=m;i<=n;i++)
for(j=m;j<=n;j++)
if(x[i][j]-x[i-m][j]-x[i][j-m]+x[i-m][j-m]!=v[lit])
ok[i][j]=1;
}
for(i=m;i<=n;i++)
for(j=m;j<=n;j++)
s=s+1-ok[i][j];
printf("%d",s);
return 0;
}