# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
920135 | TIN | Savez (COCI15_savez) | C++17 | 90 ms | 19000 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#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;
ll p[len];
ll hashS[len];
map<ll,ll> dp;
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;
}
ll getHash(int l, int r) {
return (hashS[r] - hashS[l - 1] * p[r - l + 1] + M * M) % M;
}
void Solve() {
//Your Code
prepare();
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> s;
int lenS = sz(s);
s = " " + s;
hashS[0] = 1;
for (int j = 1; j <= lenS; j++) {
hashS[j] = (hashS[j - 1] * base + s[j] + 1) % M;
}
ll val = 0;
for (int j = 1; j <= lenS; j++) {
if (getHash(1, j) == getHash(lenS - j + 1, lenS)) {
val = max(val, dp[getHash(1, j)]);
}
}
dp[getHash(1, lenS)] = val + 1;
ans = max(ans, dp[getHash(1, lenS)]);
}
cout << ans << '\n';
}
int main() {
Task();
Solve();
cerr << "\nTime run: " << 1000*clock()/CLOCKS_PER_SEC << "ms";
return 37^37;
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |