Pagini recente » Cod sursa (job #2690475) | Cod sursa (job #65420) | Cod sursa (job #1395392) | Cod sursa (job #2628902) | Cod sursa (job #425801)
Cod sursa(job #425801)
#include<stdio.h>
#include<string.h>
FILE*f=fopen("matrix.in","r");
FILE*g=fopen("matrix.out","w");
int fr[150],i,j,n,m,d,c[1001][1001],nr;
char a[1001][1001],x,ok[1001][1001];
int main () {
fscanf(f,"%d %d\n",&m,&n);
for(i=1;i<=m;i++){
for(j=1;j<=m;j++)
fscanf(f,"%c",&a[i][j]);
fscanf(f,"\n");
}
fscanf(f,"\n");
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
fscanf(f,"%c",&x);
fr[x]++;
}
fscanf(f,"\n");
}
for(d='a';d<='z';d++){
memset(c,0,sizeof(c));
for(i=1;i<=m;i++){
for(j=1;j<=m;j++){
c[i][j]=c[i-1][j]+c[i][j-1]-c[i-1][j-1];
if(a[i][j]==d)
c[i][j]++;
}
}
for(i=n;i<=m;i++){
for(j=n;j<=m;j++){
if(!(c[i][j]-c[i-n][j]-c[i][j-n]+c[i-n][j-n]==fr[d]))
ok[i][j]=1;
}
}
}
for(i=n;i<=m;i++)
for(j=n;j<=m;j++)
if(ok[i][j]==0)
nr++;
fprintf(g,"%d",nr);
fclose(f);
fclose(g);
return 0;
}