Cod sursa(job #3136117)

Utilizator Ilie_MityIlie Dumitru Ilie_Mity Data 5 iunie 2023 14:31:10
Problema Matrix Scor 70
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.83 kb
//Ilie Dumitru
#include<cstdio>
const int NMAX=1024;

int N, M;
char mat[NMAX];
int cnt[NMAX][NMAX][26], sub[26];

int main()
{
	FILE* f=fopen("matrix.in", "r"), *g=fopen("matrix.out", "w");
	int i, j, k, ans=0;
	bool ok;

	fscanf(f, "%d%d", &M, &N);
	fgets(mat, NMAX, f);
	for(i=0;i<M;++i)
	{
		fgets(mat, NMAX, f);
		for(j=0;j<M;++j)
		{
			for(k=0;k<26;++k)
				cnt[i+1][j+1][k]=cnt[i+1][j][k]+cnt[i][j+1][k]-cnt[i][j][k];
			++cnt[i+1][j+1][mat[j]-'a'];
		}
	}

	for(i=0;i<N;++i)
	{
		fgets(mat, NMAX, f);
		for(j=0;j<N;++j)
			++sub[mat[j]-'a'];
	}

	for(i=N;i<=M;++i)
		for(j=N;j<=M;++j)
		{
			ok=1;
			for(k=0;k<26 && ok;++k)
				if(cnt[i][j][k]-cnt[i][j-N][k]-cnt[i-N][j][k]+cnt[i-N][j-N][k]!=sub[k])
					ok=0;
			ans+=ok;
		}

	fprintf(g, "%d\n", ans);

	fclose(f);
	fclose(g);
	return 0;
}