Cod sursa(job #2548785)

Utilizator divianegoescuDivia Negoescu divianegoescu Data 17 februarie 2020 08:20:32
Problema Matrix Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <fstream>
using namespace std;
ifstream fin("matrix.in");
ofstream fout("matrix.out");
int n,m,i,j,sol,d[1005][1005],ok[1005][1005],f[200];
char a[1005][1005],b[1005][1005],lit;
int main(){
    fin>>n>>m;
    for(i=1;i<=n;i++)
        for(j=1;j<=n;j++)
            fin>>a[i][j];
    for(i=1;i<=m;i++)
        for(j=1;j<=m;j++){
            fin>>b[i][j];
            f[b[i][j]]++; ///cate litere de fiecare tip contine virusul
        }
    ///pt ca elementele se pot interschimba in matricea virus => nu conteaza ordinea lor, doar frecventa
    for(lit='a';lit<='z';lit++){
        for(i=1;i<=n;i++)
            for(j=1;j<=n;j++)
                d[i][j]=d[i-1][j]+d[i][j-1]-d[i-1][j-1]+(lit==a[i][j]);\
        for(i=m;i<=n;i++)
            for(j=m;j<=n;j++) ///verific daca submatricea cu coltul dreapta jos in i,j contine fix f[lit] litere 'lit'
                if(d[i][j]-d[i-n][j]-d[i][j-n]+d[i-n][j-n]!=f[lit])
                    ok[i][j]=1;
    }
    for(i=m;i<=n;i++)
        for(j=m;j<=n;j++)
            sol+=1-d[i][j];
    fout<<sol;
    return 0;
}