Pagini recente » Cod sursa (job #368696) | Cod sursa (job #423552) | Cod sursa (job #1011387) | Cod sursa (job #674375) | Cod sursa (job #2228034)
#include <fstream>
#include <iostream>
#include <valarray>
using namespace std;
valarray<int> sp[1010][1010]= {};
int main(){
for(auto& x : sp)
for(auto& y : x)
y.resize(26, 0);
int m, n;
ifstream f("matrix.in");
ofstream g("matrix.out");
f >> m >> n;
for(int i = 1; i <= m; ++i){
for(int j = 1; j <= m; ++j){
char ch;
f >> ws >> ch;
sp[i][j][ch - 'a'] += 1; } }
for(int i = 1; i <= m; ++i)
for(int j = 1; j <= m; ++j)
sp[i][j] = (sp[i][j] - sp[i-1][j-1] + sp[i-1][j] + sp[i][j-1]);
valarray<int> target(26);
for(int i = 0; i < n; ++i){
for(int j = 0; j < n; ++j){
char ch;
f >> ws>> ch;
target[ch - 'a'] += 1; } }
int ret = 0;
for(int i = n; i <= m; ++i)
for(int j = n; j <= m; ++j){
bool b = (target == sp[i][j] + sp[i-n][j-n] - sp[i-n][j] - sp[i][j-n]).min();
ret += (int)b; }
g << ret << endl;
return 0; }