Cod sursa(job #683426)

Utilizator dtoniucDaniel Toniuc dtoniuc Data 20 februarie 2012 17:14:04
Problema Matrix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <iostream>
#include <fstream>

using namespace std;

char x;
int v[26],c[26], a[1024][1024],m,n,sum=0,fr[1024][1024],b[1024][1024];

int verif()
{
	for(int i=1;i<=26;i++)
		if(c[i]!=v[i]) return 0;
	return 1;
}
void citire()
{
	ifstream fin("matrix.in");
	fin>>m>>n;
	for(int i=1;i<=m;i++)
		for(int j=1;j<=m;j++)
		{
			fin >>x;
			a[i][j]=x-'a'+1;
		}
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
		{
			fin>>x;
			++v[x-'a'+1];
		}
}
void det()
{
	for(int k=1;k<=26;k++)
	{
		for(int i=1;i<=m;i++)
			for(int j=1;j<=m;j++)
				fr[i][j]=fr[i-1][j]+fr[i][j-1]-fr[i-1][j-1]+(a[i][j]==k);
		for(int i=n;i<=m;i++)
			for(int j=n;j<=m;j++)
				if(v[k]!=fr[i][j]-fr[i-n][j]-fr[i][j-n]+fr[i-n][j-n])
					b[i][j]=1;
	}
	for(int i=n;i<=m;i++)
		for(int j=n;j<=m;j++)
			if(b[i][j]==0)
				sum++;
}
int main()
{
	citire();
	det();
	ofstream fout("matrix.out");
	fout<<sum;
	return 0;
}