# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
920130 | 2024-02-02T05:29:48 Z | TIN | Savez (COCI15_savez) | C++17 | 100 ms | 65536 KB |
#include <bits/stdc++.h> using namespace std; #define FNAME "test" #define sz(s) (int) (s).size() typedef long long ll; const int base = 311; const ll M = 1e9 + 3; const int N = 505; const int len = 2e6 + 5; int n; string s[N]; ll p[len]; map<ll,ll> hashS[N]; ll dp[N]; ll ans = 0; void Task() { ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); cout << fixed << setprecision(9); if (fopen(FNAME".inp","r")) { freopen(FNAME".inp","r",stdin); freopen(FNAME".out","w",stdout); } } void prepare() { p[0] = 1; for (int i = 1; i <= 2000000; i++) p[i] = (p[i - 1] * base) % M; } void update(int i, string s) { int lenS = sz(s); s = " " + s; hashS[i][0] = 0; for (int j = 1; j <= lenS; j++) hashS[i][j] = (hashS[i][j - 1] * base + s[j] + 1) % M; } ll getHash(int i, int l, int r) { return (hashS[i][r] - hashS[i][l - 1] * p[r - l + 1] + M * M) % M; } void Solve() { //Your Code prepare(); cin >> n; dp[0] = 0; for (int i = 1; i <= n; i++) { cin >> s[i]; update(i, s[i]); } for (int i = n; i >= 1; i--) { int best = 0; ll hashI = getHash(i, 1, sz(s[i])); ll hashHead, hashTail; for (int j = i + 1; j <= n; j++) { if (sz(s[j]) < sz(s[i])) continue; hashHead = getHash(j, 1, sz(s[i])); hashTail = getHash(j, sz(s[j]) - sz(s[i]) + 1, sz(s[j])); if (hashHead == hashI && hashI == hashTail) { if (dp[j] > dp[best]) { best = j; } } } dp[i] = dp[best] + 1; ans = max(ans, dp[i]); } cout << ans << '\n'; } int main() { Task(); Solve(); cerr << "\nTime run: " << 1000*clock()/CLOCKS_PER_SEC << "ms"; return 37^37; }
Compilation message
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 11 ms | 15960 KB | Output is correct |
2 | Correct | 11 ms | 15968 KB | Output is correct |
3 | Correct | 12 ms | 16216 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 13 ms | 16216 KB | Output is correct |
2 | Correct | 11 ms | 15960 KB | Output is correct |
3 | Correct | 25 ms | 21084 KB | Output is correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Runtime error | 100 ms | 65536 KB | Execution killed with signal 9 |
2 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 34 ms | 20816 KB | Output is correct |
2 | Runtime error | 96 ms | 65536 KB | Execution killed with signal 9 |
3 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Runtime error | 32 ms | 40528 KB | Execution killed with signal 11 |
2 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Runtime error | 27 ms | 35664 KB | Execution killed with signal 11 |
2 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Runtime error | 25 ms | 34128 KB | Execution killed with signal 11 |
2 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Runtime error | 25 ms | 33396 KB | Execution killed with signal 11 |
2 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Runtime error | 24 ms | 32600 KB | Execution killed with signal 11 |
2 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Runtime error | 24 ms | 32600 KB | Execution killed with signal 11 |
2 | Halted | 0 ms | 0 KB | - |