Cod sursa(job #2287262)

Utilizator MateiAruxandeiMateiStefan MateiAruxandei Data 21 noiembrie 2018 18:25:45
Problema Matrix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.27 kb
#include <fstream>

using namespace std;

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

int frMat[1005][1005], fr[28];
bool Rez[1005][1005];
char ch[1005][1005];

int main()
{
    int m, n;
    fin >> m >> n;

    fin.get();
    for(int i = 1; i <= m; ++i)
        for(int j = 1; j <= m; ++j)
            fin >> ch[i][j];


    for(int i = 1; i <= n; ++i)
        for(int i = 1; i <= n; ++i)
        {
            char ch;
            fin >> ch;

            fr[ch - 'a']++;
        }

    for(int k = 0; k <= 26; ++k)
    {
        for(int i = 1; i <= m; ++i)
        {
            for(int j = 1; j <= m; ++j)
            {
                frMat[i][j] = frMat[i][j - 1] + frMat[i - 1][j] - frMat[i - 1][j - 1];
                if(ch[i][j] - 'a' == k)
                    frMat[i][j]++;
            }
        }

        for(int i = n; i <= m; ++i)
            for(int j = n; j <= m; ++j)
            {
                if(frMat[i][j] - frMat[i][j - n] - frMat[i - n][j] + frMat[i - n][j - n] != fr[k])
                    Rez[i][j] = 1;
            }

    }

    int rez = 0;
    for(int i = n; i <= m; ++i)
        for(int j = n; j <= m; ++j)
            if(!Rez[i][j])
                ++rez;
    fout << rez << '\n';
    return 0;
}