Cod sursa(job #575697)

Utilizator Catah15Catalin Haidau Catah15 Data 8 aprilie 2011 17:38:36
Problema Matrix Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.16 kb
#include <iostream>
#include <fstream>

using namespace std;

#define maxN 1005


char a[maxN][maxN];
int vir[30], v[30], sol, N, M;


int main()
{
	ifstream f("matrix.in");
	ofstream g("matrix.out");
	
	f >> N >> M;
	
	for (int i = 1; i <= N; ++ i)
		for (int j = 1; j <= N; ++ j)
			f >> a[i][j];
	
	
	for (int i = 1; i <= M; ++ i)
		for (int j = 1; j <= M; ++ j)
		{
			char c;
			
			f >> c;
			
			++ vir[c - 'a'];
		}
	
		
	for (int i = 1; i <= M; ++ i)
		for (int j = 1; j <= M; ++ j)
			++ v[a[i][j] - 'a'];

	bool ok = true;
	
	for (int x = 0; x < 26; ++ x)
			if (v[x] != vir[x])
			{
				ok = false;
				break;
			}
			
		if (ok) ++ sol;	
	
	
	for (int i = 1; i <= N; ++ i)
		for (int j = 1; j <= N; ++ j)
		{
			if (i == 1 && j == 1) continue;
			
			for (int t = i; t < i + M; ++ t)
				-- v[a[t][j - 1] - 'a'];
		
			for (int t = i; t < i + M; ++ t)
				++ v[a[t][j + M - 1] - 'a'];
			
			bool ok = true;
			
			for (int x = 0; x < 26; ++ x)
				if (v[x] != vir[x])
				{
					ok = false;
					break;
				}
				
			if (ok) ++ sol;
		}
	
	
	g << sol;
	
	
	f.close();
	g.close();
	
	return 0;
}