Cod sursa(job #496178)

Utilizator soare_cristian16Cristy93 soare_cristian16 Data 27 octombrie 2010 23:20:33
Problema Matrix Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include<fstream>
using namespace std;
ifstream f("matrix.in");
ofstream g("matrix.out");
int v[2][1001][27],genom[27],rasp[27],n,m,sol;
char x,a[1001][1001];
int main()
{
	bool ok;
	int i,j,k;
	f>>n>>m;
	for(i=1;i<=n;i++)
	{
		for(j=1;j<=n;j++)
		{
			f>>a[i][j];
			if(i<m)
				v[1][j][a[i][j]-'a']++;
		}
	}
	for(i=1;i<=m;i++)
	{
		for(j=1;j<=m;j++)
		{
			f>>x;
			genom[x-'a']++;
		}
	}
	for(i=m;i<=n;i++)
	{
		for(j=1;j<=n;j++)
		{
			if(i>m)
				v[0][j][a[i-m][j]-'a']++;
			v[1][j][a[i][j]-'a']++;
			ok=true;
			for(k=0;k<26;k++)
			{
				if(j==1)
					rasp[k]=0;
				if(j>=m)
				{
					rasp[k]-=(v[1][j-m][k]-v[0][j-m][k]);
					rasp[k]+=(v[1][j][k]-v[0][j][k]);
					if(rasp[k]!=genom[k])
						ok=false;
				}
				else
					rasp[k]+=(v[1][j][k]-v[0][j][k]);
			}
			if(ok&&j>=m)
				sol++;
		}
	}
	g<<sol;
	return 0;
}