Nu aveti permisiuni pentru a descarca fisierul grader_test2.in
Cod sursa(job #1205331)
| Utilizator | Data | 6 iulie 2014 01:39:12 | |
|---|---|---|---|
| Problema | Matrix | Scor | 70 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 1 kb |
#include <fstream>
#include <iostream>
using namespace std;
ifstream fin ("matrix.in");
ofstream fout ("matrix.out");
const int N = 1005, sigma = 26;
int sp[N][N][sigma], sum[sigma], m, n, sol;
char c;
int main() {
fin >> m >> n;
fin.get();
for (int i = 1; i <= m; ++i)
for (int j = 1; j <= m; ++j) {
fin >> c;
for (int ch = 0; ch < sigma; ++ch)
sp[i][j][ch] = sp[i-1][j][ch] + sp[i][j-1][ch] - sp[i-1][j-1][ch] + (ch + 'a' == c);
}
for (int i = 1; i <= n; ++i)
for (int j = 1; j <= n; ++j) {
fin >> c;
sum[c - 'a']++;
}
for (int i = n; i <= m; ++i)
for (int j = n; j <= m; ++j) {
bool ok = 1;
for (int ch = 0; ok && ch < 26; ++ch)
if (sp[i][j][ch] - sp[i-n][j][ch] - sp[i][j-n][ch] + sp[i-n][j-n][ch] != sum[ch])
ok = 0;
if (ok)
sol++;
}
fout << sol;
}
