Cod sursa(job #567979)

Utilizator Adrian1997Radulescu Adrian Adrian1997 Data 30 martie 2011 18:23:09
Problema Matrix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <stdio.h>
FILE *f=fopen("matrix.in","r");
FILE *g=fopen("matrix.out","w");
int n,m;
int fr[301];
int b[1001][1001];
char a[1001][1001];
bool ver[1001][1001];

int main(void){
	register int i,j;
	
	fscanf(f,"%d %d\n",&m,&n);
	for(i=1;i<=m;i++){
		fscanf(f,"%s",a[i]+1);
		fscanf(f,"\n");
	}
	for(i=1;i<=n;i++){
		for(j=1;j<=n;j++){
			char ch;
			fscanf(f,"%c",&ch);
			fr[ch]++;
		}
		fscanf(f,"\n");
	}
	fclose(f);
	
	int k;
	int nr=0;
	for(k='a';k<='z';k++){
		if(fr[k]){
			for(i=1;i<=m;i++){
				for(j=1;j<=m;j++){
					b[i][j]=b[i-1][j]+b[i][j-1]-b[i-1][j-1];
					if(a[i][j]==k){
						b[i][j]++;
					}
					if(i>=n && j>=n && b[i][j]+b[i-n][j-n]-b[i-n][j]-b[i][j-n]!=fr[k]){
						if(!ver[i][j])
							nr++;
						ver[i][j]=true;
					}
				}
			}
		}
	}
	
	fprintf(g,"%d",(m-n+1)*(m-n+1)-nr);
	fclose(g);
	return 0;
}