Pagini recente » Cod sursa (job #216637) | Cod sursa (job #828316) | Cod sursa (job #1530951) | Cod sursa (job #11432) | Cod sursa (job #592429)
Cod sursa(job #592429)
#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;
}