Pagini recente » Cod sursa (job #798042) | Cod sursa (job #1233251) | Cod sursa (job #415592) | Cod sursa (job #3240310) | Cod sursa (job #3236382)
#include<bits/stdc++.h>
std::ifstream fin("matrix.in");
std::ofstream fout("matrix.out");
int n, m, dp[1005][1005][26], sol[26], cnt;
int main(){
fin >> n >> m;
for(int i = 1; i <= n; ++i)
for(int j = 1; j <= n; ++j){
char c;
fin >> c;
for(int k = 0; k < 26; ++k)
dp[i][j][k] = dp[i - 1][j][k] + dp[i][j - 1][k] - dp[i - 1][j - 1][k] + ((c - 'a') == k);
}
for(int i = 1; i <= m; ++i)
for(int j = 1; j <= m; ++j){
char c;
fin >> c;
++sol[c - 'a'];
}
for(int i = m; i <= n; ++i)
for(int j = m; j <= n; ++j){
bool ok = true;
for(int k = 0; k < 26; ++k)
if(dp[i][j][k] - dp[i - m][j][k] - dp[i][j - m][k] + dp[i - m][j - m][k] != sol[k]){
ok = false;
break;
}
cnt += ok;
}
fout << cnt;
}