Cod sursa(job #2228034)

Utilizator tamionvTamio Vesa Nakajima tamionv Data 2 august 2018 15:50:56
Problema Matrix Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <fstream>
#include <iostream>
#include <valarray>
using namespace std;

valarray<int> sp[1010][1010]=  {};

int main(){
    for(auto& x : sp)
        for(auto& y : x)
            y.resize(26, 0);

    int m, n;
    ifstream f("matrix.in");
    ofstream g("matrix.out");
    f >> m >> n;
    for(int i = 1; i <= m; ++i){
        for(int j = 1; j <= m; ++j){
            char ch;
            f >> ws >> ch;
            sp[i][j][ch - 'a'] += 1; } }
    for(int i = 1; i <= m; ++i)
        for(int j = 1; j <= m; ++j)
            sp[i][j] = (sp[i][j] - sp[i-1][j-1] + sp[i-1][j] + sp[i][j-1]);

    valarray<int> target(26);
    for(int i = 0; i < n; ++i){
        for(int j = 0; j < n; ++j){
            char ch;
            f >> ws>> ch;
            target[ch - 'a'] += 1;  } }

    int ret = 0;
    for(int i = n; i <= m; ++i)
        for(int j = n; j <= m; ++j){
            bool b = (target == sp[i][j] + sp[i-n][j-n] - sp[i-n][j] - sp[i][j-n]).min();
            ret += (int)b; }
        
    g << ret << endl;
    return 0; }