Cod sursa(job #1334335)

Utilizator akaprosAna Kapros akapros Data 4 februarie 2015 11:30:58
Problema Matrix Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include<cstdio>
#include<algorithm>
#define Nmax 700
using namespace std;
int n,m,i,j,l,p,q,nr,sol,ok;
int a[27][Nmax][Nmax];
int main()
{
    char v[Nmax][Nmax],s[Nmax];
    int w[27];
    freopen("matrix.in","r",stdin);
    freopen("matrix.out","w",stdout);
    scanf("%d %d\n",&n,&m);
    for (l=0;l<=26;l++) w[l]=0;
    for (i=1;i<=n;i++)
    {
        gets(v[i]+1);
        for (j=1;j<=n;j++)
        {
            for (l=0;l<26;l++)
            a[l][i][j]=a[l][i-1][j]+a[l][i][j-1]-a[l][i-1][j-1];
            a[v[i][j]-'a'][i][j]++;
        }
    }
    for (i=1;i<=m;i++)
    {
        gets(s+1);
        for (j=1;j<=m;j++)
        w[s[j]-'a']++;
    }

    for (i=m;i<=n;i++)
    for (j=m;j<=n;j++)
    {
        ok=1;
        for (l=0;l<26;l++)
        if (a[l][i][j]-a[l][i-m][j]-a[l][i][j-m]+a[l][i-m][j-m]!=w[l])
        {ok=0; break;}
        sol=sol+ok;
    }
    printf("%d",sol);
    return 0;
}