Pagini recente » Cod sursa (job #1859277) | Cod sursa (job #1395268) | Cod sursa (job #1566450) | Cod sursa (job #1240680) | Cod sursa (job #566859)
Cod sursa(job #566859)
#include<fstream>
#define NMAX 1024
using namespace std;
char a[NMAX][NMAX], x[NMAX];
int n, m, fr[27], ok[NMAX][NMAX], s[NMAX][NMAX];
ifstream f("matrix.in");
ofstream g("matrix.out");
void Citeste()
{
f>>n>>m;
int i, j;
f.get();
for (i=1; i<=n; ++i) f.getline(a[i], NMAX);
for (i=1; i<=m; ++i)
{
f.getline(x, NMAX);
for (j=0; j<m; ++j) ok[i][j+1]=1, ++fr[x[j]-'a'+1];
}
}
void Solve()
{
char c;
int i, j, nr, x;
for (c='a'; c<='z'; ++c)
if (fr[c-'a'+1])
{
for (i=1; i<=n; ++i)
for (j=1; j<=m; ++j)
{
s[i][j]=s[i-1][j]+s[i][j-1]-s[i][j];
if (a[i][j]=='c') ++s[i][j];
if (i>=m && j>=m)
{
x=s[i][j]-s[i-m][j]-s[i][j-m]+s[i-m][j-m];
if (x!=fr[c-'a'+1]) ok[i][j]=1;
}
}
}
nr=n*n;
for (i=1; i<=n; ++i)
for (j=1; j<=n; ++j) nr=nr-ok[i][j];
g<<nr<<"\n";
}
int main()
{
Citeste();
Solve();
f.close();
g.close();
return 0;
}