Pagini recente » Cod sursa (job #866265) | Cod sursa (job #3250588) | Cod sursa (job #210026) | Cod sursa (job #3151689) | Cod sursa (job #425799)
Cod sursa(job #425799)
#include <stdio.h>
#define DIM 1001
FILE *f1 = fopen("matrix.in","r");
FILE *f2 = fopen("matrix.out","w");
int a[DIM][DIM];
int prp[DIM][DIM];
int v[DIM][DIM];
int fr[255];
int m,n;
int i,j;
int c,out;
int main(){
fscanf(f1,"%d %d\n",&n,&m);
for(i=1; i<=n; i++){
for(j=1; j<=n; j++)
fscanf(f1,"%c",&a[i][j]);
fscanf(f1,"\n");
}
for(i=1; i<=m; i++){
for(j=1; j<=m; j++){
fscanf(f1,"%c",&c);
fr[c]++;
}
fscanf(f1,"\n");
}
for(c='a'; c<='z'; c++)
for(i=1; i<=n; i++)
for(j=1; j<=n; j++){
prp[i][j] = prp[i-1][j] + prp[i][j-1] - prp[i-1][j-1];
if(a[i][j] == c)
prp[i][j]++;
if(i>=m && j>=m && v[i][j] == 0)
if(!(fr[c] == prp[i][j] - prp[i-m][j] - prp[i][j-m] + prp[i-m][j-m]))
v[i][j] = 1;
}
for(i=m; i<=n; i++)
for(j=m; j<=n; j++)
out += !v[i][j];
fprintf(f2,"%d",out);
fclose(f1);
fclose(f2);
return 0;
}