Cod sursa(job #2732979)

Utilizator Botnaru_VictorBotnaru Victor Botnaru_Victor Data 29 martie 2021 17:47:13
Problema Matrix Scor 65
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <bits/stdc++.h>

#define nmax 1003

using namespace std;

char v[nmax][nmax];
int f[27][nmax][nmax];
int vir[27];

int main()
{
    freopen("matrix.in","r",stdin);
    freopen("matrix.out","w",stdout);
    int n,m;
    cin>>n>>m;
    for(int i=1;i<=n;i++)
    {
        string a;
        cin>>a;
        for(int j=1;j<=n;j++)
        {
            v[i][j]=a[j-1];
            for(int k=0;k<27;k++)
                f[k][i][j]=f[k][i-1][j]+f[k][i][j-1]-f[k][i-1][j-1];
            f[v[i][j]-'a'][i][j]++;
        }
    }
    for(int i=0;i<m;i++)
    {
        string a;
        cin>>a;
        for(int j=0;j<m;j++)
        {
            vir[a[j]-'a']++;
        }
    }
    int ans=0;
    for(int i=0;i<=n-m;i++)
    {
        for(int j=0;j<=n-m;j++)
        {
            bool ok=1;
            for(int k=0;k<27;k++)
            {
                int s=f[k][i+m][j+m]-f[k][i+m][j]-f[k][i][j+m]+f[k][i][j];
                if(s!=vir[k])
                {
                    ok=0;
                }
            }
            if(ok) ans++;
        }
    }
    cout<<ans;
    return 0;
}