Cod sursa(job #2293732)

Utilizator Mihai145Oprea Mihai Adrian Mihai145 Data 1 decembrie 2018 15:03:21
Problema Matrix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.45 kb
#include <fstream>
#include <cstring>

using namespace std;

ifstream fin("matrix.in");
ofstream fout("matrix.out");

int N, M, ans;
int a[1005][1005];

char s[1005][1005];
char ss[1005][1005];

bool isOk[1005][1005];

int main()
{
    fin >> M >> N;

    for(int i = 1; i <= M; i++)
        for(int j = 1; j <= M; j++)
            fin >> s[i][j];

    for(int i = 1; i <= N; i++)
        for(int j = 1; j <= N; j++)
            fin >> ss[i][j];

    for(int sigma = 0; sigma <= 'z' - 'a'; sigma++)
    {
        int currentCharCount = 0;

        for(int i = 1; i <= N; i++)
            for(int j = 1; j <= N; j++)
                if(ss[i][j] - 'a' == sigma)
                    currentCharCount++;

        memset(a, 0, sizeof(a));
        for(int i = 1; i <= M; i++)
            for(int j = 1; j <= M; j++)
                if(s[i][j] - 'a' == sigma)
                    a[i][j]++;

        for(int i = 1; i <= M; i++)
            for(int j = 1; j <= M; j++)
                a[i][j] = a[i][j] + a[i - 1][j] + a[i][j - 1] - a[i - 1][j - 1];

        for(int i = N; i <= M; i++)
            for(int j = N; j <= M; j++)
                if(a[i][j] - a[i - N][j] - a[i][j - N] + a[i - N][j - N] != currentCharCount)
                    isOk[i][j] = true;
    }

    for(int i = N; i <= M; i++)
        for(int j = N; j <= M; j++)
            if(isOk[i][j] == false)
                ans++;

    fout << ans;

    return 0;
}