Cod sursa(job #274109)

Utilizator f.v.antonFlavius Anton f.v.anton Data 9 martie 2009 14:02:34
Problema Matrix Scor 65
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <iostream.h>
#include <fstream.h>
#include <string.h>
char x[502][502],nr1[255],nr2[255];
int egal(char x[], char y[])
{
	for(int i=0;i<255;i++)
	 if(x[i]!=y[i])
	  return 0;
	return 1;
}
int main()
{
	char y[502][502],sir[1002];
	int n,m,i,j,l,c,count=0;
	fstream f("matrix.in",ios::in), g("matrix.out",ios::out);
	f>>m>>n;
	f.get();
	for(i=1;i<=m;i++)
	{  f.getline(sir,1000);
	  for(j=0;j<strlen(sir);j++)
	   x[i][j+1]=sir[j];
	}
	for(i=1;i<=n;i++)
       {  f.getline(sir,1000);
	  for(j=0;j<strlen(sir);j++)
	    y[i][j+1]=sir[j];
       }
       for(i=1;i<=n;i++)
	for(j=1;j<=n;j++)
	 nr2[y[i][j]]++;

       for(l=1;l<=m-n+1;l++)
       {
	 for(i=l;i<=n+l-1;i++)
	  for(j=1;j<=n;j++)
	   nr1[x[i][j]]++;
	 if(egal(nr1,nr2))
	  count++;

	 for(c=2;c<=m-n+1;c++)
	 {
		for(i=l;i<=l+n-1;i++)
		 nr1[x[i][c-1]]--;
		for(i=l;i<=l+n-1;i++)
		 nr1[x[i][c+n-1]]++;
		if(egal(nr1,nr2))
		 count++;
	 }
	   for(i=0;i<255;i++)
	    nr1[i]=0;
	 }
	g<<count;
	f.close();
	g.close();
	return 0;
}