Pagini recente » Cod sursa (job #1490596) | Cod sursa (job #1225050) | Cod sursa (job #951629) | Cod sursa (job #2184505) | Cod sursa (job #2565123)
#include <iostream>
#include <fstream>
#include <cmath>
#include <deque>
using namespace std;
ifstream f("matrix.in");
ofstream g("matrix.out");
int n,m,ct[30],sum[1005][1005][30],nr=0;
char a[1005][1005],b[1005][1005];
int main()
{
f>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
{
f>>a[i][j];
for(int z=1;z<=26;z++)
if(a[i][j]-'a'+1==z)
sum[i][j][z]=sum[i-1][j][z]+sum[i][j-1][z]-sum[i-1][j-1][z]+1;
else
sum[i][j][z]=sum[i-1][j][z]+sum[i][j-1][z]-sum[i-1][j-1][z];
}
for(int i=1;i<=m;i++)
for(int j=1;j<=m;j++)
{
f>>b[i][j];
ct[b[i][j]-'a'+1]++;
}
for(int i=m;i<=n;i++)
for(int j=m;j<=n;j++)
{
bool OK=1;
for(int z=1;z<=26;z++)
{
if(sum[i][j][z]-sum[i-m][j][z]-sum[i][j-m][z]+sum[i-m][j-m][z]!=ct[z])
{
OK=0;
break;
}
}
if(OK==1) nr++;
}
g<<nr;
}