Pagini recente » Cod sursa (job #1117879) | Cod sursa (job #411940) | Cod sursa (job #2137445) | Cod sursa (job #1152214) | Cod sursa (job #492364)
Cod sursa(job #492364)
#include<cstdio>
const int N=1010;
int n,m,total;
char s[N];
int a[N][N][30];
int virus[30];
int main()
{
freopen("matrix.in","r",stdin);
freopen("matrix.out","w",stdout);
scanf("%d%d\n" , &m , &n);
for (int i=1;i<=m;i++)
{
gets(s);
for (int j=0;j<m;j++)
{
for (int k=1;k<=27;k++)
a[i][j+1][k]=a[i][j][k];
a[i][j+1][s[j]-'a'+1]++;
}
}
for (int i=1;i<=m;i++)
{
for (int j=1;j<=m;j++)
{
for (int k=1;k<=27;k++)
a[i][j][k]+=a[i-1][j][k];
}
}
for (int i=1;i<=n;i++)
{
gets(s);
for (int j=0;j<n;j++)
virus[s[j]-'a'+1]++;
}
int i=0;
for (i=1;i<=m-n+1;i++)
{
for (int j=1;j<=m-n+1;j++)
{
int nr=0;
for (int k=1;k<=27;k++)
if ( a[i+n-1][j+n-1][k] - a[i-1][j+n-1][k] - a[i+n-1][j-1][k] + a[i-1][j-1][k] == virus [ k ] ) nr++;
if (nr== 27 ) total++;
}
}
printf("%d", total);
return 0;
}