Cod sursa(job #635840)

Utilizator roots4Irimia Alexandru Gabriel roots4 Data 19 noiembrie 2011 15:10:11
Problema Matrix Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <stdio.h>
#define val 1009
int n , m , i , j , k , h , c,q;
char V[val][val] , a;
int Z[val][val];
int Ok[val][val];
int Fr[300];
int main(){
	freopen("matrix.in","r",stdin);
	freopen("matrix.out","w",stdout);
	scanf("%d%d\n",&m,&n);
	for(i=1;i<=m;i++){
		for(j=1;j<=m;j++){
			scanf("%c",&V[i][j]);
		}
		scanf("\n");
	}
	
	for(i=1;i<=n;i++){
		for(j=1;j<=n;j++){
			scanf("%c",&a);
			Fr[a]++;
		}
		scanf("\n");
	}
	for(i='a';i<='z';i++){
		for(j=1;j<=m;j++){
			for(k=1;k<=m;k++){
				Z[j][k]=Z[j-1][k]+Z[j][k-1]-Z[j-1][k-1];
				if(V[j][k]==i)
					Z[j][k]++;
				if(j>=n&&k>=n&&Ok[j][k]==0){
					h=Z[j][k]-Z[j][k-n]-Z[j-n][k]+Z[j-n][k-n];
					if(h!=Fr[i])
						Ok[j][k]=1;
				}
			}			
		}
	}
	for(i=n;i<=m;i++){
		for(j=n;j<=m;j++){
			if(Ok[i][j]==0)
				c++;
		}
	}
	printf("%d",c);
	return 0;
}