Cod sursa(job #567323)

Utilizator lianaliana tucar liana Data 29 martie 2011 22:20:59
Problema Matrix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <stdio.h>
#define nmax 1002
long i, la, lb, j, s[nmax][nmax], rez, nr[30];
char c, a[nmax][nmax], b[nmax][nmax];
bool gas[nmax][nmax];

void citire()
{
	scanf("%ld %ld\n",&la, &lb);
	for (i=1;i<=la;i++)
		gets(a[i]);
	for (i=1;i<=lb;i++)
		gets(b[i]);
}

void rezolvare()
{
	for (i=1;i<=lb;i++)
		for (j=1;j<=lb;j++)
			nr[b[i][j-1]-'a']++;
	for (c='a';c<='z';c++)
		for (i=1;i<=la;i++)
			for (j=1;j<=la;j++)
			{
				s[i][j]=s[i-1][j]+s[i][j-1]-s[i-1][j-1];
				if (a[i][j-1]==c)	
					s[i][j]++;
				if ((i>=lb) && (j>=lb))
					if (s[i][j]-s[i-lb][j]-s[i][j-lb]+s[i-lb][j-lb]!=nr[c-'a'])
						gas[i][j]=1;
			}
	for (i=lb;i<=la;i++)
		for (j=lb;j<=la;j++)
			rez+=!gas[i][j];
	printf("%ld",rez);
}

int main()
{
	freopen("matrix.in","r",stdin);
	freopen("matrix.out","w",stdout);
	citire();
	rezolvare();
	return 0;
}