Pagini recente » Cod sursa (job #2512500) | Cod sursa (job #2319137) | Cod sursa (job #1612123) | Cod sursa (job #1447473) | Cod sursa (job #2549453)
#include <fstream>
using namespace std;
ifstream fin("matrix.in");
ofstream fout("matrix.out");
int n,m,i,j,sol,d[1005][1005],ok[1005][1005],f[200];
char a[1005][1005],b[1005][1005],lit;
int main(){
fin>>n>>m;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
fin>>a[i][j];
for(i=1;i<=m;i++)
for(j=1;j<=m;j++){
fin>>b[i][j];
f[b[i][j]]++; ///cate litere de fiecare tip contine virusul
}
///pt ca elementele se pot interschimba in matricea virus => nu conteaza ordinea lor, doar frecventa
for(lit='a';lit<='z';lit++){
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
d[i][j]=d[i-1][j]+d[i][j-1]-d[i-1][j-1]+(lit==a[i][j]);
for(i=m;i<=n;i++)
for(j=m;j<=n;j++) ///verific daca submatricea cu coltul dreapta jos in i,j contine fix f[lit] litere 'lit'
if(d[i][j]-d[i-m][j]-d[i][j-m]+d[i-m][j-m]!=f[lit])
ok[i][j]=1;
}
for(i=m;i<=n;i++)
for(j=m;j<=n;j++)
sol+=1-ok[i][j];
fout<<sol;
return 0;
}