Cod sursa(job #2685696)

Utilizator eugen5092eugen barbulescu eugen5092 Data 17 decembrie 2020 16:00:35
Problema Matrix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <bits/stdc++.h>
using namespace std;

ifstream ci("matrix.in");
ofstream cou("matrix.out");

int n,m;
int v[1005][1005];
int s[1005][1005];
int s2[1005][1005];
int k,k2;

void init(){
    int i,j;
    for(i=1;i<=n;i++){
        for(j=1;j<=n;j++){
            s[i][j]=s[i][j-1]+s[i-1][j]-s[i-1][j-1]+v[i][j];
            s2[i][j]=s2[i][j-1]+s2[i-1][j]-s2[i-1][j-1]+v[i][j]*v[i][j];
        }
    }
}

void citire(){
    char a;
    ci>>n>>m;
    int i,j;
    for(i=1;i<=n;i++){
        for(j=1;j<=n;j++){
            ci>>a;
            v[i][j]=a-'a'+1;
        }
    }
    for(i=1;i<=m;i++){
        for(j=1;j<=m;j++){
            ci>>a;
            k+=a-'a'+1;
            k2+=(a-'a'+1)*(a-'a'+1);
        }
    }
}

void rez(){
    int i,j,p,p2,cn=0;
    for(i=m;i<=n;i++){
        for(j=m;j<=n;j++){
            p=s[i][j]-s[i-m][j]-s[i][j-m]+s[i-m][j-m];
            p2=s2[i][j]-s2[i-m][j]-s2[i][j-m]+s2[i-m][j-m];
            if(p==k&&p2==k2){
                cn++;
            }
        }
    }
    cou<<cn;
}

int main()
{
    citire();
    init();
    rez();
    return 0;
}