Cod sursa(job #1205336)

Utilizator tudorv96Tudor Varan tudorv96 Data 6 iulie 2014 01:48:31
Problema Matrix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <fstream>
using namespace std;

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

const int N = 1005, sigma = 26;

int sp[N][N], sum[sigma], m, n, sol;
char s[N][N];
bool ok[N][N];
char c;

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