Cod sursa(job #2355937)

Utilizator MihneaGhiraMihnea MihneaGhira Data 26 februarie 2019 13:31:30
Problema Matrix Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.02 kb
#include<fstream>
#include<cstring>
using namespace std;
ifstream fin("matrix.in");
ofstream fout("matrix.out");
int n,m,nr;
int ok[1002][1002],f[300];
char a[1002][1002],b[1002][1002],c;
int main(){
    fin>>n>>m;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            fin>>a[i][j];
            ok[i][j]=1;
        }
    }
    for(int i=1;i<=m;i++){
        for(int j=1;j<=m;j++){
            fin>>c;
            f[c]++;
        }
    }

    for(char c='a';c<='z';c++){
        for(int i=1;i<=n;i++){
            for(int j=1;j<=n;j++){
                b[i][j]=(a[i][j]==c)+b[i][j-1]+b[i-1][j]-b[i-1][j-1];
            }
        }
        for(int i=m;i<=n;i++){
            for(int j=m;j<=n;j++){
                if((b[i][j]-b[i-m][j]-b[i][j-m]+b[i-m][j-m])!=f[c]){
                    ok[i][j]=0;
                }
            }
        }
    }
    for(int i=m;i<=n;i++){
        for(int j=m;j<=n;j++){
            nr+=ok[i][j];
        }
    }

    fout<<nr<<"\n";
    return 0;
}