Pagini recente » Cod sursa (job #2116328) | Cod sursa (job #3133108) | Cod sursa (job #1327774) | Cod sursa (job #1339490) | Cod sursa (job #1143057)
#include <fstream>
using namespace std;
ifstream f("matrix.in");
ofstream g("matrix.out");
int N,M;
int Aparition[30];
bool OK[1005][1005];
int Matrix[1005][1005];
char Code[1005][1005];
int Result;
void Read()
{
int i,j;
char ch;
f>>M>>N;
for(i=1;i<=M;i++)
for(j=1;j<=M;j++)
f>>Code[i][j];
for(i=1;i<=N;i++)
for(j=1;j<=N;j++)
{
f>>ch;
Aparition[ch-'a']++;
}
}
void Browse(char ch)
{
int i,j;
/*for(i=1;i<=N;i++)
for(j=1;j<=N;j++)
Matrix[N][N][Code[i][j]-'a']++;*/
for(i=1;i<=M;i++)
for(j=1;j<=M;j++)
Matrix[i][j]=Matrix[i][j-1]+Matrix[i-1][j]-Matrix[i-1][j-1]+(Code[i][j]==ch);
for(i=N;i<=M;i++)
for(j=N;j<=M;j++)
{
bool ok=0;
int i2=i-N+1,j2=j-N+1;
if(Matrix[i][j]-Matrix[i2-1][j]-Matrix[i][j2-1]+Matrix[i2-1][j2-1]!=Aparition[ch-'a'])
OK[i][j]=1;
}
}
void Count_Result()
{
int i,j;
for(i=N;i<=M;i++)
for(j=N;j<=M;j++)
if(OK[i][j]==0)
Result++;
}
int main()
{
Read();
for(int i=0;i<26;i++)
Browse(i+'a');
Count_Result();
g<<Result<<"\n";
return 0;
}