Cod sursa(job #3360467)

Utilizator rareshdelasmBraica Rares Petrisor rareshdelasm Data 14 iulie 2026 12:10:19
Problema Matrix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.18 kb
#include <bits/stdc++.h>
using namespace std;

ifstream in("matrix.in");
ofstream out("matrix.out");
int n,m, d[1010][1010],ok[1010][1010],f[130],sol;
char a[1001][1001],b;


int main()
{
    in>>n>>m;
    for(int i=1; i<=n; i++)
    {
        for(int j=1; j<=n; j++)
        {
            in>>a[i][j];
        }
    }
    for(int i=1; i<=m; i++)
    {
        for(int j=1; j<=m; j++)
        {
            in>>b;
            f[b]++;
        }
    }
    for(int i=m; i<=n; i++)
    {
        for(int j=m; j<=n; j++)
        {
            ok[i][j]=1;
        }
    }
    for (char c='a'; c<='z'; c++)
    {
        for(int i=1; i<=n; i++)
        {
            for(int j=1; j<=n; j++)
            {
                d[i][j]=(a[i][j]==c) +d[i-1][j]+d[i][j-1]-d[i-1][j-1];
            }
        }

        for (int i=m; i<=n; i++)
            for (int j=m; j<=n; j++)
                if (d[i][j]-d[i-m][j]-d[i][j-m]+d[i-m][j-m] !=
                        f[c])
                    ok[i][j] = 0;
    }
    for(int i=m;i<=n;i++)
    {
        for(int j=m;j<=n;j++)
        {
            sol+=ok[i][j];
        }
    }
    out<<sol;

    return 0;
}