Cod sursa(job #183857)

Utilizator razvi9Jurca Razvan razvi9 Data 22 aprilie 2008 17:50:41
Problema Matrix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include<cstdio>
#include<cstring>
int n,m,nr[26],a[1001][1001],i,j,k,NR;
char good[1001][1001],A[1001][1001],B[1001];
int main()
{
	freopen("matrix.in","r",stdin);
	freopen("matrix.out","w",stdout);
	scanf("%d %d ",&n,&m);
	for(i=1;i<=n;i++)
		gets(A[i]);
	for(i=1;i<=m;i++)
	{
		gets(B);
		for(j=0;j<m;j++)
			nr[B[j]-'a']++;
	}
	memset(good,1,sizeof(good));
	for(k=0;k<26;k++)
	{
		char c=k+'a';
		for(i=1;i<=n;i++)
			for(j=1;j<=n;j++)
			{
				a[i][j]=a[i-1][j]+a[i][j-1]-a[i-1][j-1];
				if(A[i][j-1]==c) a[i][j]++;
				if(i>=m && j>=m && (a[i][j]-a[i-m][j]-a[i][j-m]+a[i-m][j-m])!=nr[k]) good[i][j]=0;
			}
	}
	for(i=m;i<=n;i++)
		for(j=m;j<=n;j++)
			if(good[i][j]) NR++;
	printf("%d\n",NR);
	fclose(stdout);
	return 0;
}