Pagini recente » Cod sursa (job #3166371) | Cod sursa (job #1360565) | Cod sursa (job #1697817) | Cod sursa (job #2933884) | Cod sursa (job #1410929)
#include<fstream>
#include<cstring>
using namespace std;
ifstream fin("matrix.in");
ofstream fout("matrix.out");
int i,n,m,j,ok[1005][1005],f[100],t,s[1005][1005],sum;
char a[1005][1005],b[1005][1005],maxim;
int main(){
fin>>n>>m;
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
fin>>a[i][j];
ok[i][j]=1;
}
}
for(i=1;i<=m;i++){
for(j=1;j<=m;j++){
fin>>b[i][j];
f[b[i][j]-'a'+1]++;
if(maxim<b[i][j]){
maxim=b[i][j];
}
}
}
for(t=1;t<=maxim-'a'+1;t++){
memset(s,0,sizeof(s));
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
s[i][j]=s[i][j-1]+s[i-1][j]-s[i-1][j-1];
if(a[i][j]-'a'+1==t){
s[i][j]++;
}
}
}
for(i=m;i<=n;i++){
for(j=m;j<=n;j++){
if(( s[i][j] - s[i-m][j] - s[i][j-m] + s[i-m][j-m]) != f[t]){
ok[i][j]=0;
}
}
}
}
for(i=m;i<=n;i++){
for(j=m;j<=n;j++){
sum+=ok[i][j];
}
}
fout<<sum<<"\n";
return 0;
}