Cod sursa(job #496176)

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