Cod sursa(job #1240452)

Utilizator pop_bogdanBogdan Pop pop_bogdan Data 11 octombrie 2014 13:12:12
Problema Matrix Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.29 kb
//
//  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;
int 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-N][j][k-97] + D[i][j-N][k-97] - D[i-N][j-N][k-97] != V[k-97] )
                    S = 0;
            }
            if ( S == 0 )
                Sol++;
        }
    
    os << Sol;
    is.close();
    os.close();
}