Cod sursa(job #2287251)

Utilizator MateiAruxandeiMateiStefan MateiAruxandei Data 21 noiembrie 2018 18:11:23
Problema Matrix Scor 70
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.15 kb
#include <fstream>

using namespace std;

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

int frMat[1005][1005][28], fr[28];

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

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

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

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

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

    int rez = 0;
    for(int i = n; i <= m; ++i)
        for(int j = n; j <= m; ++j)
        {
            bool ok = 1;
            for(int k = 0; k <= 26; ++k)
                if(frMat[i][j][k] - frMat[i][j - n][k] - frMat[i - n][j][k] + frMat[i - n][j - n][k] != fr[k]){
                    ok = 0;
                    break;
                }
            if(ok)
                ++rez;
        }
    fout << rez << '\n';
    return 0;
}