Pagini recente » Cod sursa (job #1538149) | Cod sursa (job #2698218) | Cod sursa (job #2644378) | Cod sursa (job #1516654) | Cod sursa (job #1827694)
#include <bits/stdc++.h>
#define nmax 10005
using namespace std;
ifstream fin("matrix.in");
ofstream fout("matrix.out");
char a[nmax][nmax],b[nmax][nmax];
int sum[nmax][nmax],sum1[nmax][nmax],n,m;
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);
}
void Rezolvare()
{
int i,j,x,sol=0;
long long s,sp,t,t1;
s=sp=0;
for(i=1;i<=m;i++)
{
for(j=1;j<=m;j++)
{
x=b[i][j]-'a'+1;
s+=x;
sp+=(x*x);
}
}
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
x=a[i][j]-'a'+1;
sum[i][j]=x+sum[i-1][j]+sum[i][j-1]-sum[i-1][j-1];
x=(x*x);
sum1[i][j]=x+sum1[i-1][j]+sum1[i][j-1]-sum1[i-1][j-1];
}
}
for(i=m;i<=n;i++)
for(j=m;j<=n;j++)
{
t=sum[i][j]-sum[i-m][j]-sum[i][j-m]+sum[i-m][j-m];
t1=sum1[i][j]-sum1[i-m][j]-sum1[i][j-m]+sum1[i-m][j-m];
if(t==s && t1==sp)
sol++;
}
fout<<sol<<"\n";
}
int main()
{
Citire();
Rezolvare();
fin.close();
fout.close();
return 0;
}