Cod sursa(job #422011)

Utilizator andreirulzzzUPB-Hulea-Ionescu-Roman andreirulzzz Data 22 martie 2010 00:22:52
Problema Matrix Scor 75
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <cstdio>
#include <cstring>
#define FOR(i,a,b) for(i=a;i<=b;i++)
using namespace std;

char a[1001][1001],b[1001][1001];
int nr,ok,i1,j1,i2,j2,car[256],aux[256],m,n,i,j;

int main(){
	freopen("matrix.in","r",stdin);
	freopen("matrix.out","w",stdout);
	scanf("%d%d",&m,&n);
	FOR(i,1,m) scanf("%s",&a[i]);
	FOR(i,1,n) scanf("%s",&b[i]);
	FOR(i,1,n) FOR(j,0,n-1) ++car[int(b[i][j])];
	FOR(i,1,n) FOR(j,0,n-1) ++aux[int(a[i][j])];
	i1=j1=1;i2=j2=n;
	while (1){
		ok=1;
		FOR(i,95,130) if (car[i]!=aux[i]){ok=0;break;}
		if (ok) ++nr;
		++j1,++j2;
		if (j2>m){
			memset(aux,0,sizeof(aux));
			++i1,++i2;
			FOR(i,i1,i2) FOR(j,0,n-1) ++aux[int(a[i][j])];
			j1=1,j2=n; continue;
		}
		else
			FOR(i,i1,i2)
				--aux[int(a[i][j1-2])],++aux[int(a[i][j2-1])];
		if (i1>m) break;
	}
	printf("%d\n",nr);
	return 0;
}