Cod sursa(job #1067916)

Utilizator andreiiiiPopa Andrei andreiiii Data 27 decembrie 2013 17:42:01
Problema Matrix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <fstream>
#include <bitset>


using namespace std;

const int N=1005;

ifstream fin("matrix.in");
ofstream fout("matrix.out");

int f1[26], f2[N][N];
char a[N][N], cit[N];
bitset <N> v[N];

int main()
{
    int n, m, i, j, k, sol=0;
    fin>>n>>m;
    for(i=1;i<=n;i++) fin>>(a[i]+1);
    for(i=1;i<=m;i++)
    {
        fin>>(cit+1);
        for(j=1;j<=m;j++)
        {
            f1[cit[j]-'a']++;
        }
    }
    for(k=0;k<26;k++)
    {
        for(i=1;i<=n;i++)
        {
            for(j=1;j<=n;j++)
            {
                f2[i][j]=f2[i-1][j]+f2[i][j-1]-f2[i-1][j-1];
                if(a[i][j]-'a'==k) f2[i][j]++;
                if(i>=m&&j>=m) if(f2[i][j]-f2[i-m][j]-f2[i][j-m]+f2[i-m][j-m]!=f1[k]) v[i][j]=1;
            }
        }
    }
    for(i=m;i<=n;i++)
    {
        for(j=m;j<=n;j++)
        {
            if(!v[i][j]) sol++;
        }
    }
    fout<<sol;
}