Pagini recente » Cod sursa (job #610985) | Cod sursa (job #2484665) | Cod sursa (job #429052) | Cod sursa (job #1770218) | Cod sursa (job #1240459)
//
// main.cpp
// Matrix
//
// Created by Pop Bogdan on 11/10/14.
// Copyright (c) 2014 Pop Bogdan. All rights reserved.
//
#include <fstream>
using namespace std;
ifstream is("matrix.in");
ofstream os("matrix.out");
int M, N;
char x;
unsigned short D[1001][1001][26];
char A[1001][1001];
int V[26];
int main()
{
is >> M >> N;
for ( int i = 1; i <= M; ++i )
for ( int j = 1; j <= M; ++j )
is >> A[i][j];
for ( int i = 1; i <= M; ++i )
for ( int j = 1; j <= M; ++j )
for ( char k = 'a' ; k <= 'z'; ++k )
{
D[i][j][k-97] = D[i-1][j][k-97] + D[i][j-1][k-97] - D[i-1][j-1][k-97];
if ( k == A[i][j] )
D[i][j][k-97]++;
}
for ( int i = 1; i <= N; ++i )
for ( int j = 1; j <= N; ++j )
{
is >> x;
V[x-97]++;
}
bool S;
int Sol(0);
for ( int i = N; i <= M; ++i )
for ( int j = N; j <= M; ++j )
{
S = 1;
for ( int k = 'a'; k <= 'z'; ++k )
{
if ( (D[i][j][k-97] - (D[i-N][j][k-97] + D[i][j-N][k-97] - D[i-N][j-N][k-97])) != V[k-97] )
S = 0;
}
if ( S == 1 )
Sol++;
}
os << Sol;
is.close();
os.close();
}