Cod sursa(job #3236383)

Utilizator prares06Papacioc Rares-Ioan prares06 Data 28 iunie 2024 13:12:43
Problema Matrix Scor 75
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.86 kb
#include<bits/stdc++.h>

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

short unsigned n, m, dp[1005][1005][26], sol[26], cnt;
char c;

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

    for(int i = 1; i <= n; ++i)
    for(int j = 1; j <= n; ++j){
        fin >> c;
        for(int k = 0; k < 26; ++k)
            dp[i][j][k] = dp[i - 1][j][k] + dp[i][j - 1][k] - dp[i - 1][j - 1][k] + ((c - 'a') == k);
    }

    for(int i = 1; i <= m; ++i)
    for(int j = 1; j <= m; ++j){
        fin >> c;
        ++sol[c - 'a'];
    }

    for(int i = m; i <= n; ++i)
    for(int j = m; j <= n; ++j){
        bool ok = true;
        for(int k = 0; k < 26; ++k)
        if(dp[i][j][k] - dp[i - m][j][k] - dp[i][j - m][k] + dp[i - m][j - m][k] != sol[k]){
            ok = false;
            break;
        }
        cnt += ok;
    }

    fout << cnt;
}