Cod sursa(job #2644097)

Utilizator tryharderulbrebenel mihnea stefan tryharderul Data 23 august 2020 13:37:58
Problema Matrix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <iostream>
#include <stdio.h>
#include <string.h>

#define NMAX 1003

using namespace std;

int n,m,i,j,s,lit;
int x[NMAX][NMAX],v[NMAX],ok[NMAX][NMAX];

char a[NMAX][NMAX],b[NMAX][NMAX],c;

int main()
{
    freopen("matrix.in","r",stdin);
    freopen("matrix.out","w",stdout);

    scanf("%d%d",&n,&m);

    for(i=1;i<=n;i++)
        for(j=1;j<=n;j++){
            scanf(" %c",&a[i][j]);
        }

    for(i=1;i<=m;i++){
        for(j=0;j<=m;j++){
            scanf(" %c",&b[i][j]);
            if(b[i][j]!='\n' && b[i][j]!=NULL)v[b[i][j]]++;
        }

    }


    for(lit=97;lit<=122;lit++){

        for(i=1;i<=n;i++)
            for(j=1;j<=n;j++){
                if(a[i][j]==(char)lit)
                    x[i][j]=x[i-1][j]+x[i][j-1]-x[i-1][j-1]+1;
                else
                    x[i][j]=x[i-1][j]+x[i][j-1]-x[i-1][j-1];
            }

        for(i=m;i<=n;i++)
            for(j=m;j<=n;j++)
                if(x[i][j]-x[i-m][j]-x[i][j-m]+x[i-m][j-m]!=v[lit])
                    ok[i][j]=1;

    }

    for(i=m;i<=n;i++)
        for(j=m;j<=n;j++)
            s=s+1-ok[i][j];

    printf("%d",s);

    return 0;
}