Cod sursa(job #592429)

Utilizator CS-meStanca Marian Ciprian CS-me Data 28 mai 2011 13:06:28
Problema Matrix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include<stdio.h>
#include<string.h>
FILE *fin=fopen("matrix.in","r");
FILE *fout=fopen("matrix.out","w");
int n,m,d[1001][1001],k,v[1001][1001],fr[256],i,j;
char a[1001][1001],c;

void citire(){
int i,j;

	fscanf(fin,"%d %d\n",&n,&m);
	
	for(i=1;i<=n;i++){
		for(j=1;j<=n;j++){
			a[i][j]=fgetc(fin);
		}
		fgetc(fin);
	}
	
	
	for(i=1;i<=m;i++){
		for(j=1;j<=m;j++){
			c=fgetc(fin);
			fr[c]++;
		}
		fgetc(fin);
	}
	
}

int main(){

	citire();
	
	memset(v,-1,sizeof(v));
	
	for(k='a';k<='z';k++){
		memset(d,0,sizeof(d));
		for(i=1;i<=n;i++){
			for(j=1;j<=n;j++){
				d[i][j]=d[i-1][j]+d[i][j-1]-d[i-1][j-1]+(a[i][j]==k);
				if(i>=m && j>=m){
					if(d[i][j]-d[i-m][j]-d[i][j-m]+d[i-m][j-m]!=fr[k]){
						v[i][j]=0;
					}
				}
			}
		}
	}
	
	int nr=0;
	
	for(i=m;i<=n;i++){
		for(j=m;j<=n;j++){
			nr-=v[i][j];
		}
	}
	
	fprintf(fout,"%d",nr);
	
return 0;
}