Pagini recente » Cod sursa (job #1309854) | Cod sursa (job #757146) | Cod sursa (job #1437526) | Cod sursa (job #102009) | Cod sursa (job #2394647)
#include <fstream>
#define DIM 1002
#define SIGMA 26
using namespace std;
short int sum[DIM][DIM][SIGMA],fr[SIGMA],curr[SIGMA];char ch;
bool check() {
for (int i=0;i<SIGMA;++i)
if (fr[i]!=curr[i]) return 0;
return 1;
}
int main()
{ int n,m,i,j,k,ans=0;
ifstream f("matrix.in");
ofstream g("matrix.out");
f>>n>>m;
for (i=1;i<=n;++i)
for (j=1;j<=n;++j) {
f>>ch;
for (k=0;k<26;++k)
if (k!=ch-'a') sum[i][j][k]=sum[i-1][j][k];
else sum[i][j][k]=sum[i-1][j][k]+1;
}
for (i=1;i<=m;++i)
for (j=1;j<=m;++j)
f>>ch,++fr[ch-'a'];
for (i=m;i<=n;++i) {
for (k=0;k<SIGMA;++k)
curr[k]=0;
for (j=1;j<=n;++j) {
for (k=0;k<SIGMA;++k) {
curr[k]+=sum[i][j][k]-sum[i-m][j][k];
if (j>m) curr[k]=curr[k]-(sum[i][j-m][k]-sum[i-m][j-m][k]);
}
if (check()) ++ans;
}
}
g<<ans<<'\n';
return 0;
}