#include <bits/stdc++.h>
#pragma GCC optimize("O3")
using namespace std;
struct Prefix {
int v[26];
Prefix& operator=(char a) {
fill(v, v+26, 0);
v[a-'a']++;
return *this;
}
Prefix& operator+=(Prefix const& rhs) {
for (int i = 0; i < 26; i++)
v[i] += rhs.v[i];
return *this;
}
Prefix& operator-=(Prefix const& rhs) {
for (int i = 0; i < 26; i++)
v[i] -= rhs.v[i];
return *this;
}
bool operator==(Prefix const& rhs) const {
return equal(v, v+26, rhs.v, rhs.v+26);
}
};
int const maxn = 505;
int const mod = 1e9 + 9;
int const p1 = 37;
int pre[maxn];
void init() {
pre[0] = 1;
for (int i = 1; i < maxn; i++)
pre[i] = static_cast<int64_t>(pre[i-1])*p1%mod;
}
void h(char* a, int n, int* v) {
v[0] = a[0];
for (int i = 1; i < n; i++)
v[i] = (static_cast<int64_t>(v[i-1]) +
static_cast<int64_t>(pre[i]) * a[i])%mod;
}
int hc(int* v, int l, int r) {
int x = v[r];
if (l > 0) x -= v[l-1];
if (x < 0) x += mod;
return x;
}
char v[maxn][maxn];
int hs[maxn][maxn];
Prefix p[maxn][maxn];
int main() {
ios::sync_with_stdio(false), cin.tie(nullptr);
init();
int n, k;
cin >> n >> k;
for (int i = 0; i < n; i++) {
cin >> v[i];
for (int j = 0; j < n; j++) {
p[i][j] = v[i][j];
if (j > 0)
p[i][j] += p[i][j-1];
}
h(v[i], n, hs[i]);
}
bool certo = false;
for (int l = 0; l < n-k+1; l++) {
int r = l+k-1;
for (int i = 0; i < n; i++) {
for (int j = i+1; j < n; j++) {
bool ok = true;
if (l > 0) ok &= (hc(hs[i], 0, l-1) == hc(hs[j], 0, l-1));
if (!ok) continue;
ok &= (hc(hs[i], r+1, n-1) == hc(hs[j], r+1, n-1));
if (!ok) continue;
Prefix ip = p[i][r], jp = p[j][r];
if (l > 0) {
ip -= p[i][l-1];
jp -= p[j][l-1];
}
ok &= (ip == jp);
if (ok) certo = true;
}
}
}
if (certo) cout << "DA\n";
else cout << "NE\n";
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
2 ms |
384 KB |
Output is correct |
2 |
Correct |
2 ms |
384 KB |
Output is correct |
3 |
Correct |
2 ms |
384 KB |
Output is correct |
4 |
Correct |
2 ms |
256 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
2 ms |
384 KB |
Output is correct |
2 |
Correct |
2 ms |
384 KB |
Output is correct |
3 |
Correct |
2 ms |
512 KB |
Output is correct |
4 |
Correct |
2 ms |
428 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
2 ms |
384 KB |
Output is correct |
2 |
Correct |
2 ms |
384 KB |
Output is correct |
3 |
Correct |
2 ms |
512 KB |
Output is correct |
4 |
Correct |
2 ms |
384 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
7 ms |
5760 KB |
Output is correct |
2 |
Correct |
8 ms |
5768 KB |
Output is correct |
3 |
Correct |
12 ms |
5760 KB |
Output is correct |
4 |
Correct |
12 ms |
5760 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
8 ms |
5760 KB |
Output is correct |
2 |
Correct |
7 ms |
5760 KB |
Output is correct |
3 |
Correct |
10 ms |
5760 KB |
Output is correct |
4 |
Correct |
10 ms |
5760 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
8 ms |
5760 KB |
Output is correct |
2 |
Correct |
7 ms |
5760 KB |
Output is correct |
3 |
Correct |
9 ms |
5760 KB |
Output is correct |
4 |
Correct |
9 ms |
5760 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
6 ms |
5760 KB |
Output is correct |
2 |
Correct |
7 ms |
5760 KB |
Output is correct |
3 |
Correct |
9 ms |
5732 KB |
Output is correct |
4 |
Correct |
10 ms |
5760 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
29 ms |
27260 KB |
Output is correct |
2 |
Correct |
31 ms |
27256 KB |
Output is correct |
3 |
Correct |
39 ms |
27264 KB |
Output is correct |
4 |
Correct |
37 ms |
27256 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
27 ms |
27260 KB |
Output is correct |
2 |
Correct |
29 ms |
27264 KB |
Output is correct |
3 |
Correct |
131 ms |
27384 KB |
Output is correct |
4 |
Correct |
124 ms |
27604 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
28 ms |
27256 KB |
Output is correct |
2 |
Correct |
34 ms |
27256 KB |
Output is correct |
3 |
Correct |
73 ms |
27264 KB |
Output is correct |
4 |
Correct |
71 ms |
27256 KB |
Output is correct |