Cod sursa(job #551176)

Utilizator marta_diannaFII Filimon Marta Diana marta_dianna Data 10 martie 2011 14:33:26
Problema Matrix Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include<fstream>
#define NMAX 1024

using namespace std;

int a[NMAX][NMAX][27], fr[27], n, m, REZ=0;
char c;

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

void Citeste()
{
	int i, j, k;
	f>>m>>n;
	f.get();
	for (i=1; i<=m; ++i)
		for (j=1; j<=m; ++j)
		{
			f>>c;
			for (k=1; k<27; ++k)
				a[i][j][k]=a[i-1][j][k]+a[i][j-1][k]-a[i-1][j-1][k];
			++a[i][j][c-'a'+1];
		}
	for (i=1; i<=n; ++i)
		for (j=1; j<=n; ++j)
		{
			f>>c;
			++fr[c-'a'+1];
		}
}

void Solve()
{
	int i, j, ii, jj, k, z, ok;
	for (i=1; i<=m-n+1; ++i)
		for (j=1; j<=m-n+1; ++j)
		{
			ii=i+n-1; jj=j+n-1; ok=1;
			for (k=1; k<27; ++k)
			{
				z=a[ii][jj][k]-a[ii][j-1][k]-a[i-1][jj][k]+a[i-1][j-1][k];
				if (z!=fr[k]) { ok=0; break;}
			}
			REZ+=ok;
		}
	g<<REZ<<"\n";
}

int main()
{
	Citeste();
	
	Solve();
	
	f.close();
	g.close();
	return 0;
}