Cod sursa(job #1205332)

Utilizator tudorv96Tudor Varan tudorv96 Data 6 iulie 2014 01:39:37
Problema Matrix Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <fstream>
#include <iostream>
using namespace std;

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

const int N = 1005, sigma = 26;

short sp[N][N][sigma], sum[sigma], m, n, sol;
char c;

int main() {
    fin >> m >> n;
    fin.get();
    for (int i = 1; i <= m; ++i)
        for (int j = 1; j <= m; ++j) {
            fin >> c;
            for (int ch = 0; ch < sigma; ++ch)
                sp[i][j][ch] = sp[i-1][j][ch] + sp[i][j-1][ch] - sp[i-1][j-1][ch] + (ch + 'a' == c);
        }
    for (int i = 1; i <= n; ++i)
        for (int j = 1; j <= n; ++j) {
            fin >> c;
            sum[c - 'a']++;
        }
    for (int i = n; i <= m; ++i)
        for (int j = n; j <= m; ++j) {
            bool ok = 1;
            for (int ch = 0; ok && ch < 26; ++ch)
                if (sp[i][j][ch] - sp[i-n][j][ch] - sp[i][j-n][ch] + sp[i-n][j-n][ch] != sum[ch])
                    ok = 0;
            if (ok)
                sol++;
        }
    fout << sol;
}