Pagini recente » Cod sursa (job #2445697) | Cod sursa (job #1504769) | Cod sursa (job #2945131) | Cod sursa (job #2357881) | Cod sursa (job #271933)
Cod sursa(job #271933)
#include<stdio.h>
int A,B,i,j,l,viz[64],rez,nr[1011][1011],k;
char r[1011][1011],a[1011][1011],b[1011][1011];
int main(){
FILE *f = fopen("matrix.in","r");
FILE *g = fopen("matrix.out","w");
fscanf(f,"%d %d\n",&A,&B);
for(i=1; i<=A; i++){
for(j=1; j<=A; j++){
fscanf(f,"%c",&a[i][j]);
r[i][j] = 1;
}
fscanf(f,"\n");
}
for(i=1; i <= B; i++){
for(j=1; j <= B; j++){
fscanf(f,"%c",&b[i][j]);
viz[ b[i][j] - 'a' ]++;
}
fscanf(f,"\n");
}
for(l=0; l <= ('z' - 'a'); l++){
for(i=1; i <=A ; i++)
for(j=1 ; j <= A; j++){
nr[i][j] = nr[i-1][j] + nr[i][j-1] - nr[i-1][j-1];
if( a[i][j] == l + 'a' )
nr[i][j]++;
if( i >= B && j>= B ){
if( r[i][j] && nr[i][j] - nr[ i-B ][j] - nr[i][ j-B ] + nr[i-B][j-B] != viz[ l ] ){
r[i][j] = 0;
}
}
}
}
for(i=B; i<=A; i++)
for(j=B; j<=A; j++)
if( r[i][j] )
rez++;
fprintf(g,"%d",rez);
fclose(f);
fclose(g);
return 0;
}