Cod sursa(job #495631)

Utilizator KoniacDocea Andrei Koniac Data 26 octombrie 2010 11:19:51
Problema Matrix Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include<stdio.h>

FILE * f = fopen("matrix.in","r");
FILE * g = fopen("matrix.out","w");

int m,n,i,j,nr,ok,q;
char x;
char v[27],a[1001][1001];
char b[1001][1001][27];
int main(){
	fscanf(f,"%d%d",&m,&n);
	for(i=1;i<=m;i++){
		for(j=1;j<=m;j++){
			fscanf(f,"%c",&a[i][j]);
		}
		fscanf(f,"/n");
	}
	for(i=1;i<=n;i++){
		for(j=1;j<=n;j++){
			fscanf(f,"%c",&x);
			v[x-'a'+1]++;
		}
		fscanf(f,"/n");
	}
	for(i=1;i<=m;i++){
		for(j=1;j<=m;j++){
			for(q=1;q<=26;q++){
				if(q==a[i][j]-'a'+1)
					b[i][j][q]=b[i-1][j][q]+b[i][j-1][q]-b[i-1][j-1][q];
				if(a[i][j]-'a'+1==q){
					b[i][j][q]++;
				}
			}
		}
	}
	for(i=n;i<=m;i++){
		for(j=n;j<=m;j++){
			ok=0;
			for(q=1;q<=26;q++){
				if(b[i][j][q]-b[i-1][j][q]-b[i][j-1][q]+b[i-1][j-1][q]!=v[q]){
					ok=1;
				}
				if(ok==0){
					nr++;
				}
			}
		}
	}
	fprintf(g,"%d",nr);
	
	fclose(f);
	fclose(g);
	return 0;
}