后缀数组简单总结(三)
L * d[1]; CLR(d, 0); d[getid(i)] = 1; } else d[getid(i)]++; } if (height[n] >= L) ans += 1LL * d[1] * d[2]; return ans; } void solve() { cout << get(k) - get(k + 1) << endl; } int main() { int x; while (cin >> n1 >> n2 >> k) { CLR(idx, 0); n = 0; m = 10003; REP(i, n1) { RI(x); a[n] = x + 1; idx[n++] = 1; } a[n++] = m++; REP(i, n2) { RI(x); a[n] = x + 1; idx[n++] = 2; } a[n] = 0; if (n == 0 || m == 0) { cout << 0 << endl; continue; } build_sa(a, sa, n + 1, m); getHeight(a, sa, n); solve(); } return 0; }