Pagini recente » Cod sursa (job #926431) | Cod sursa (job #492816) | Cod sursa (job #490025) | Monitorul de evaluare | Cod sursa (job #2644089)
#include <iostream>
#include <stdio.h>
#include <string.h>
#define NMAX 1000
using namespace std;
int n,m,i,j,lit,s;
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 ",&n,&m);
for(i=1;i<=n;i++)
gets(a[i]+1);
for(i=1;i<=m;i++){
for(j=0;j<=m;j++){
scanf("%c",&b[i][j]);
v[b[i][j]]++;
}
}
for(lit='a';lit<='z';lit++){
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
x[i][j]=x[i-1][j]+x[i][j-1]-x[i-1][j-1]+(lit==x[i][j]);
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+ok[i][j];
printf("%d",s);
return 0;
}