Pagini recente » Cod sursa (job #578898) | Cod sursa (job #2300067)
#include <fstream>
#define NM 1000
using namespace std;
ifstream cin("matrix.in");
ofstream cout("matrix.out");
int ok,fr[30],nr[NM+10][NM+10],s[NM+10][NM+10],mat[NM+10][NM+10],NR,ld,M,N,sum;
char ch[NM+10][NM+10],l;
void scan();
void init();
int main()
{
scan();
for(int l=0;l<26;l++)
if(fr[l])
{
ld++;
for(int i=0;i<M;i++)
for(int j=0;j<M;j++)
{
ok=0;
if((ch[i][j]-'a')==l)
ok=1;
s[i][j]=s[i][j-1]+s[i-1][j]-s[i-1][j-1]+ok;
if(i>=N-1&&j>=N-1)
{
sum=s[i][j];
if(i==N-1)
{
if(j>N-1)
sum-=s[i][j-N];
}
else{
if(j>N-1)
sum-=(s[i][j-N]+s[i-N][j]-s[i-N][j-N]);
else sum-=s[i-N][j];
}
if(sum==fr[l])
nr[i][j]++;
}
}
s[0][0]=0;
}
for(int i=0;i<M;i++)
for(int j=0;j<M;j++)
if(nr[i][j]==ld)
NR++;
cout<<NR<<'\n';
return 0;
}
void scan()
{
cin>>M>>N;
for(int i=0;i<M;i++)
{
cin.get();
for(int j=0;j<M;j++)
cin>>ch[i][j];
}
for(int i=0;i<N;i++)
{
cin.get();
for(int j=0;j<N;j++)
{
cin>>l;
fr[l-'a']++;
}
}
}