Cod sursa(job #877046)

Utilizator CostanMiriamCostan Miriam CostanMiriam Data 12 februarie 2013 15:12:25
Problema Matrix Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.18 kb
#include <fstream>
using namespace std;
ifstream fin ("matrix.in");
ofstream fout ("matrix.out");
char s[28], b;
char f[1000][1000] , a[1000][1000];
char v[140];
int lit[1000][1000];
int m,n,i,j,h,k,sol;
int main () {
    fin>>m>>n;
    for (i=1;i<=m;i++)
        for (j=1;j<=m;j++)
            fin>>a[i][j];
    for (i=1;i<=n*n;i++){
        fin>>b;
        v[b]++;
    }
    for (i=n;i<=m;i++)
        for (j=n;j<=m;j++)
            f[i][j]=1;
//    char s[28]="abcdefghijklmnopqrstuvwxyz";
    for (char c='a';c<='z';c++){
        /*
        for (j=1;j<=m;j++)
            for (h=1;h<=m;h++)
                lit[j][h]=k;
                if (a[j][h]==s[i])
                    lit[j][h]=++k;
        */
        for (j=1;j<=m;j++)
            for (h=1;h<=m;h++)
                lit[j][h] = lit[j-1][h]+lit[j][h-1]-lit[j-1][h-1] + (c == a[j][h]);

        for (j=n;j<=m;j++)
            for (h=n;h<=m;h++)
                if (lit[j][h]-lit[j][h-n]-lit[j-n][h]+lit[j-n][h-n]!=v[c])
                    f[j][h]=0;
    }
    for (i=n;i<=m;i++)
        for (j=n;j<=m;j++)
            if (f[i][j]==1)
                sol++;
    fout<<sol<<"\n";

    return 0;
}