Pagini recente » Cod sursa (job #277063) | Cod sursa (job #559902) | Cod sursa (job #2722073) | Cod sursa (job #1788962) | Cod sursa (job #2363267)
#include <fstream>
using namespace std;
int n, m, i, j, c, cnt, ok, k, nr;
int a[1001][1001], sol[1001][1001];
char car;
int v[1001][1001], fr[30];
int main () {
ifstream fin ("matrix.in");
ofstream fout ("matrix.out");
fin>>n>>m;
for (i=m;i<=n;i++) {
for (j=m;j<=n;j++)
sol[i][j]=1;
}
for (i=1;i<=n;i++) {
for (j=1;j<=n;j++) {
fin>>car;
a[i][j]=car-'a';
}
}
for (i=1;i<=m;i++) {
for (j=1;j<=m;j++) {
fin>>car;
fr[car-'a']++;
}
}
for (k=0;k<=25;k++) {
for (i=1;i<=n;i++) {
for (j=1;j<=n;j++) {
if (a[i][j]==k)
v[i][j]=v[i-1][j]+v[i][j-1]-v[i-1][j-1]+1;
else
v[i][j]=v[i-1][j]+v[i][j-1]-v[i-1][j-1];
}
}
for (i=m;i<=n;i++) {
for (j=m;j<=m;j++) {
nr=v[i][j]-v[i-m][j]-v[i][j-m]+v[i-m][j-m];
if (nr!=fr[k])
sol[i][j]=0;
}
}
}
for (i=m;i<=n;i++) {
for (j=m;j<=n;j++) {
cnt+=sol[i][j];
}
}
fout<<cnt;
return 0;
}