Cod sursa(job #2343818)

Utilizator 12222Fendt 1000 Vario 12222 Data 14 februarie 2019 12:53:09
Problema Matrix Scor 100
Compilator cpp-32 Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <bits/stdc++.h>

using namespace std;

int n,m;
int a[1002][1002],b[1002][1002];

int main()
{
    FILE *fin = fopen("matrix.in","r");
    FILE *fout = fopen("matrix.out","w");

    int i,j,y,x,z,w;
    char C;
    fscanf(fin,"%d%d",&n,&m);
    for(i=1;i<=n;i++)
    {
        getc(fin);
        for(j=1;j<=n;j++)
        {
            fscanf(fin,"%c",&C);

            y=C-'a';
            a[i][j]=a[i-1][j]+a[i][j-1]-a[i-1][j-1]+y;
            b[i][j]=b[i-1][j]+b[i][j-1]-b[i-1][j-1]+y*y;
        }
    }

    z=w=0;
    for(i=1;i<=m;i++)
    {
        getc(fin);
        for(j=1;j<=m;j++)
        {
            fscanf(fin,"%c",&C);
            y=C-'a';
            z+=y;
            w+=y*y;
        }
    }

    int sol=0;
    for(i=m;i<=n;i++)
        for(j=m;j<=n;j++)
        {
            x=(a[i][j]-a[i-m][j]-a[i][j-m]+a[i-m][j-m]);
            y=(b[i][j]-b[i-m][j]-b[i][j-m]+b[i-m][j-m]);

            if(x==z && y==w)sol++;
        }

    fprintf(fout,"%d",sol);

    fclose(fin);
    fclose(fout);
    return 0;
}