Pagini recente » Cod sursa (job #1736226) | Cod sursa (job #260074) | Cod sursa (job #2248664) | Cod sursa (job #2189700) | Cod sursa (job #567979)
Cod sursa(job #567979)
#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;
}