Cod sursa(job #1143049)

Utilizator alex_HarryBabalau Alexandru alex_Harry Data 14 martie 2014 17:04:05
Problema Matrix Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.28 kb
#include <fstream>
using namespace std;
ifstream f("matrix.in");
ofstream g("matrix.out");
int N,M;
int Aparition[30];
int Matrix[1005][1005][30];
char Code[1005][1005];
int Result;
void Read()
{
    int i,j;
    char ch;
    f>>M>>N;
    for(i=1;i<=M;i++)
        for(j=1;j<=M;j++)
            f>>Code[i][j];
    for(i=1;i<=N;i++)
        for(j=1;j<=N;j++)
        {
            f>>ch;
            Aparition[ch-'a']++;
        }
}
void Browse()
{
    int i,j;
    /*for(i=1;i<=N;i++)
        for(j=1;j<=N;j++)
            Matrix[N][N][Code[i][j]-'a']++;*/
    for(i=1;i<=M;i++)
        for(j=1;j<=M;j++)
        {
            for(int k=0;k<26;k++)
                Matrix[i][j][k]=Matrix[i][j-1][k]+Matrix[i-1][j][k]-Matrix[i-1][j-1][k]+(Code[i][j]==k+'a');
        }
    for(i=N;i<=M;i++)
        for(j=N;j<=M;j++)
        {
            bool ok=0;
            int i2=i-N+1,j2=j-N+1;
            for(int k=0;k<26;k++)
                if(Matrix[i][j][k]-Matrix[i2-1][j][k]-Matrix[i][j2-1][k]+Matrix[i2-1][j2-1][k]!=Aparition[k])
                {
                    ok=1;
                    break;
                }
            if(ok==0)
                Result++;
        }
}
int main()
{
    Read();
    Browse();
    g<<Result<<"\n";
    return 0;
}