Pagini recente » Cod sursa (job #2807255) | Cod sursa (job #930185) | Cod sursa (job #2680428) | Cod sursa (job #2217166) | Cod sursa (job #409233)
Cod sursa(job #409233)
#include<fstream>
#include<cstdio>
using namespace std;
const char iname[]="matrix.in";
const char oname[]="matrix.out";
const int maxm=1005;
const int maxn=205;
ifstream f(iname);
ofstream g(oname);
char s[maxm][maxn],v[maxn][maxn];
int a[maxm][maxm],t[maxm][maxm],i,j,n,m,p,many[300],k;
int main()
{
f>>m>>n;
f.get();
for(i=1;i<=m;++i)
f.getline(s[i]+1,sizeof(s[i]));
for(i=1;i<=n;++i)
{
f.getline(v[i]+1,sizeof(v[i]));
for(j=1;j<=n;++j)
++many[v[i][j]];
}
for(i=1;i<=m;++i)
for(j=1;j<=m;++j)
t[i][j]=1;
for(p='a';p<='z';++p)
{
for(i=1;i<=m;++i)
for(j=1;j<=m;++j)
{
a[i][j]=a[i-1][j]+a[i][j-1]-a[i-1][j-1]+(s[i][j]==p);
if(t[i][j]&&i>=n&&j>=n)
t[i][j]=((a[i][j]-a[i-n][j]-a[i][j-n]+a[i-n][j-n])==many[p]);
}
}
for(i=n;i<=m;++i)
for(j=n;j<=m;++j)
k+=t[i][j];
g<<k<<"\n";
f.close();
g.close();
return 0;
}