Pagini recente » Istoria paginii runda/nimi | luni_ora_17 | Istoria paginii runda/78687jhjhjh | Cod sursa (job #124580) | Cod sursa (job #3136117)
//Ilie Dumitru
#include<cstdio>
const int NMAX=1024;
int N, M;
char mat[NMAX];
int cnt[NMAX][NMAX][26], sub[26];
int main()
{
FILE* f=fopen("matrix.in", "r"), *g=fopen("matrix.out", "w");
int i, j, k, ans=0;
bool ok;
fscanf(f, "%d%d", &M, &N);
fgets(mat, NMAX, f);
for(i=0;i<M;++i)
{
fgets(mat, NMAX, f);
for(j=0;j<M;++j)
{
for(k=0;k<26;++k)
cnt[i+1][j+1][k]=cnt[i+1][j][k]+cnt[i][j+1][k]-cnt[i][j][k];
++cnt[i+1][j+1][mat[j]-'a'];
}
}
for(i=0;i<N;++i)
{
fgets(mat, NMAX, f);
for(j=0;j<N;++j)
++sub[mat[j]-'a'];
}
for(i=N;i<=M;++i)
for(j=N;j<=M;++j)
{
ok=1;
for(k=0;k<26 && ok;++k)
if(cnt[i][j][k]-cnt[i][j-N][k]-cnt[i-N][j][k]+cnt[i-N][j-N][k]!=sub[k])
ok=0;
ans+=ok;
}
fprintf(g, "%d\n", ans);
fclose(f);
fclose(g);
return 0;
}