Cod sursa(job #2565123)

Utilizator valentinchipuc123Valentin Chipuc valentinchipuc123 Data 2 martie 2020 12:17:41
Problema Matrix Scor 70
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <iostream>
#include <fstream>
#include <cmath>
#include <deque>
using namespace std;

ifstream f("matrix.in");
ofstream g("matrix.out");

int n,m,ct[30],sum[1005][1005][30],nr=0;
char a[1005][1005],b[1005][1005];

int main()
{
f>>n>>m;
for(int i=1;i<=n;i++)
 for(int j=1;j<=n;j++)
 {
  f>>a[i][j];
  for(int z=1;z<=26;z++)
    if(a[i][j]-'a'+1==z)
  sum[i][j][z]=sum[i-1][j][z]+sum[i][j-1][z]-sum[i-1][j-1][z]+1;
    else
  sum[i][j][z]=sum[i-1][j][z]+sum[i][j-1][z]-sum[i-1][j-1][z];
 }
for(int i=1;i<=m;i++)
 for(int j=1;j<=m;j++)
 {
  f>>b[i][j];
  ct[b[i][j]-'a'+1]++;
 }
for(int i=m;i<=n;i++)
  for(int j=m;j<=n;j++)
   {
    bool OK=1;
    for(int z=1;z<=26;z++)
     {
      if(sum[i][j][z]-sum[i-m][j][z]-sum[i][j-m][z]+sum[i-m][j-m][z]!=ct[z])
       {
        OK=0;
        break;
       }
     }
    if(OK==1) nr++;
   }
g<<nr;
}