Cod sursa(job #492935)

Utilizator DeadEyeNaiba Mihai Lucian DeadEye Data 16 octombrie 2010 14:15:06
Problema Matrix Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include<cstdio>
int m,n,nr,x[31],xx[31],xau[31];
char ch,c1[1001][1001],c2[1001][1001];
int main()
{
	freopen("matrix.in","r",stdin);
	freopen("matrix.out","w",stdout);
	scanf("%d%d",&m,&n);
	scanf("\n");
	int i,j;
	for(i=0;i<m;i++)
		gets(c1[i]);
	for(i=0;i<n;i++)
		gets(c2[i]);
	for(i=0;i<n;i++)
		for(j=0;j<n;j++)
			x[c2[i][j]-96]++;
	for(i=0;i<m-n+1;i++)
		for(j=0;j<m-n+1;j++)
			xau[c1[i][j]-96]++;
	nr=0;
	for(i=0;i<m-n+1;i++)
	{
		if(i>0)
		{
			for(j=0;j<=m-n+1;j++)
			{
				xau[c1[i-1][j]-96]--;
				xau[c1[i+n-1][j]-96]++;
			}
		}
		for(j=0;j<m-n+1;j++)
		{
			if(j==0)
			{
				for(int jj=1;jj<=26;jj++)
					xx[jj]=xau[jj];
			}
			else
			{
				for(int ii=i;ii<=i+n-1;ii++)
				{
					xx[c1[ii][j-1]-96]--;
					xx[c1[ii][j-1+n]-96]++;
				}
			}
			int da=1;
			for(int jj=1;jj<=26;jj++)
				if(xx[jj]!=x[jj])
				{
					da=0;
					break;
				}
			if(da)
				nr++;
		}
	}
	printf("%d\n",nr);
	return 0;
}