Pagini recente » Cod sursa (job #3243621) | Cod sursa (job #2231466) | Cod sursa (job #113756) | Cod sursa (job #2332405) | Cod sursa (job #1827753)
#include <bits/stdc++.h>
#define Nmax 1003
using namespace std;
ifstream fin("matrix.in");
ofstream fout("matrix.out");
int n,m,sum1[Nmax][Nmax],sum1p[Nmax][Nmax],sum2[Nmax][Nmax],sum2p[Nmax][Nmax];
char a[Nmax][Nmax],b[Nmax][Nmax];
void Citire()
{
int i;
fin>>n>>m;
for(i=1;i<=n;i++)
fin>>(a[i]+1);
for(i=1;i<=m;i++)
fin>>(b[i]+1);
fin.close();
}
void Rezolvare()
{
int i,j,sol,x;
long long s,sp,val,val1;
s=sp=sol=0;
for(i=1;i<=m;i++)
for(j=1;j<=m;j++)
{
x=b[i][j]-'a'+1;
s+=x;
x=x*x;
sp+=x;
}
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{
sum1[i][j]=sum1[i-1][j]+sum1[i][j-1]-sum1[i-1][j-1]+(a[i][j]-'a'+1);
sum1p[i][j]=sum1p[i-1][j]+sum1p[i][j-1]-sum1p[i-1][j-1]+(a[i][j]-'a'+1)*(a[i][j]-'a'+1);
}
int cnt=0;
for(i=m;i<=n;i++)
for(j=m;j<=n;j++)
{
val=sum1[i][j]-sum1[i-m][j]-sum1[i][j-m]+sum1[i-m][j-m];
val1=sum1p[i][j]-sum1p[i-m][j]-sum1p[i][j-m]+sum1p[i-m][j-m];
if(val==s && val1 == sp)sol++;
}
fout<<sol<<"\n";
fout.close();
}
int main()
{
Citire();
Rezolvare();
return 0;
}