Mai intai trebuie sa te autentifici.

Cod sursa(job #2136393)

Utilizator ovidius11Stiriu Ovidius ovidius11 Data 19 februarie 2018 21:32:34
Problema Matrix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include<cstdio>
#include<algorithm>
using namespace std;
int v[1005][1005],ok[1005][1005],frecv[30];
char ch[1005][1005];
int main(){
freopen("matrix.in","r",stdin);
freopen("matrix.out","w",stdout);
int n,m,i,j,i1,x,y;
char c;
scanf("%d%d\n",&n,&m);
for(i=1;i<=n;i++){
for(j=1;j<=n;j++)
scanf("%c",&ch[i][j]),ok[i][j]=1;
scanf("\n");}
for(i=1;i<=m;i++){
for(j=1;j<=m;j++)
scanf("%c",&c),frecv[c-96]++;
scanf("\n");}
for(i1=1;i1<=26;i1++){
for(i=1;i<=1000;i++)
for(j=1;j<=1000;j++)
v[i][j]=0;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if (ch[i][j]==i1+96){
x=i-m+1;
y=j-m+1;
x=max(x,1);
y=max(y,1);
v[x][y]++;
v[x][j+1]--;
v[i+1][y]--;
v[i+1][j+1]++;}
for(i=1;i<=n-m+1;i++)
for(j=1;j<=n-m+1;j++){
v[i][j]=v[i][j]+v[i-1][j]+v[i][j-1]-v[i-1][j-1];
if (v[i][j]!=frecv[i1])
ok[i][j]=0;}}
int rasp=0;
for(i=1;i<=n-m+1;i++)
for(j=1;j<=n-m+1;j++)
if (ok[i][j]==1)
rasp++;
printf("%d\n",rasp);
return 0;}