Cod sursa(job #2956655)

Utilizator e_ggIonescu Dorian e_gg Data 20 decembrie 2022 08:36:58
Problema Matrix Scor 70
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("matrix.in");
ofstream g("matrix.out");

const int nmax = 1007;

int v[nmax][nmax], sp[nmax][nmax];
long long n, m, s, spat, curs, curspat, sol;
char c;
int main()
{
    f >> n >> m;
    for ( int i = 1; i <= n; i++ ) {
        f.get();
        for ( int j = 1; j <= n; j++ ) {
            f.get(c);
            v[i][j] = c - 'a' + 1;
            sp[i][j] = sp[i - 1][j] + sp[i][j - 1] - sp[i - 1][j - 1] + v[i][j];
        }
    }
    for ( int i = 1; i <= m; i++ ) {
        f.get();
        for ( int j = 1; j <= m; j++ ) {
            f.get(c);
            s += c - 'a' + 1;
        }
    }
    spat = s * s;
    for ( int i = m; i <= n; i++ )
        for ( int j = m; j <= n; j++ ) {
            curs = sp[i][j] - sp[i - m][j] - sp[i][j - m] + sp[i - m][j - m];
            curspat = curs * curs;
            if ( curs == s && curspat == spat )
                sol++;
        }
    g << sol << '\n';
    f.close();
    g.close();
    return 0;
}