Pagini recente » Cod sursa (job #288422) | Cod sursa (job #2271460) | Cod sursa (job #156252) | Cod sursa (job #2769670) | Cod sursa (job #3225492)
#include <bits/stdc++.h>
using namespace std;
#define TITLE "matrix"
#define ll long long
#define MaxN 1010
ifstream f (TITLE".in");
ofstream g (TITLE".out");
char Mat[MaxN][MaxN];
bool ok[MaxN][MaxN];
ll frecv[130];
ll Sp[MaxN][MaxN];
int solve()
{
int n,m;
f>>n>>m;
for(int i=1; i<=n; i++)
for(int j=1; j<=n; j++)
f>>Mat[i][j];
for(int i=1; i<=n; i++)
for(int j=1; j<=n; j++)
ok[i][j]++;
for(int i=1; i<=m; i++)
for(int j=1; j<=m; j++)
{
char a;
f>>a;
frecv[a]++;
}
for(char c='a'; c<='z'; c++)
{
for(int i=1; i<=n; i++)
for(int j=1; j<=n; j++)
Sp[i][j]=Sp[i-1][j]+Sp[i][j-1]-Sp[i-1][j-1]+(Mat[i][j]==c);
for(int i=m; i<=n; i++)
for(int j=m; j<=n; j++)
if(frecv[c]!=(Sp[i][j]-Sp[i-m][j]-Sp[i][j-m]+Sp[i-m][j-m]))
ok[i][j]=0;
}
ll answer=0;
for(int i=m; i<=n; i++)
for(int j=m; j<=n ;j++)
answer+=ok[i][j];
g<<answer;
return 0;
}
int main()
{
solve();
return 0;
}