Cod sursa(job #2356780)

Utilizator Gl0WCula Stefan Gl0W Data 26 februarie 2019 21:36:49
Problema Matrix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <fstream>

using namespace std;

ifstream fin ("matrix.in");
ofstream fout ("matrix.out");

int n, m, hz[1004], w[1005][1005], sol;
char v[1005][1005], ok[1005][1005], ch;

int main(){
	fin>>n>>m;
	for(int i = 1; i <= n; i++){
		for(int j = 1; j <= n; j++){
			fin>>v[i][j];
			ok[i][j] = 1;
		}
	}
	for(int i = 1; i <= m; i++){
		for(int j = 1; j <= m; j++){
			fin>>ch;
			hz[ch - 'a' + 1]++;
		}
	}
	for(char k = 'a'; k <= 'z'; k++){
		for(int i = 1; i <= n; i++){
			for(int j = 1; j <= n; j++){
				w[i][j] = w[i - 1][j] + w[i][j - 1] - w[i - 1][j - 1];
				if(v[i][j] == k){
					w[i][j]++;
				}
			}
		}
		for(int i = m; i <= n; i++){
			for(int j = m; j <= n; j++){
				int val = w[i][j] - w[i][j - m] - w[i - m][j] + w[i - m][j - m];
				if(val != hz[k - 'a' + 1]){
					ok[i][j] = 0;
				}
			}
		}
	}
	for(int i = m; i <= n; i++){
		for(int j = m; j <= n; j++){
			if(ok[i][j] == 1){
				sol++;
			}
		}
	}
	fout<<sol;
	return 0;
}