# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
632873 | racsosabe | Savez (COCI15_savez) | C++14 | 134 ms | 17212 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;
const int B = 311;
const int MOD = 1e9 + 7;
const int N = 2000000 + 5;
int mul(int a, int b){
return (1ll * a * b) % MOD;
}
int pow_mod(int a, int b){
int r = 1;
while(b){
if(b & 1) r = mul(r, a);
a = mul(a, a);
b >>= 1;
}
return r;
}
int n;
char s[N];
int pot[N];
int poti[N];
int prefix[N];
map<int, int> best;
void init(){
pot[0] = 1;
for(int i = 1; i < N; i++) pot[i] = mul(pot[i - 1], B);
poti[N - 1] = pow_mod(pot[N - 1], MOD - 2);
for(int i = N - 2; i >= 0; i--) poti[i] = mul(poti[i + 1], B);
}
bool check(int l, int len){
int L = prefix[l];
int R = mul(prefix[len] - prefix[len - l], poti[len - l]);
return L == R;
}
int main(){
init();
scanf("%d", &n);
for(int i = 1; i <= n; i++){
scanf("%s", s + 1);
int len = strlen(s + 1);
for(int j = 1; j <= len; j++) prefix[j] = (prefix[j - 1] + mul(pot[j], s[j])) % MOD;
for(int l = 1; l <= len; l++){
if(check(l, len)){
int cur = 1 + (best.count(prefix[l]) ? best[prefix[l]] : 0);
best[prefix[l]] = cur;
}
}
}
int ans = 0;
for(auto e : best){
if(ans < e.second) ans = e.second;
}
printf("%d\n", ans);
return 0;
}
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... |