# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
95364 | 2019-01-30T18:42:51 Z | teomrn | Lozinke (COCI17_lozinke) | C++14 | 92 ms | 61896 KB |
#include <bits/stdc++.h> using namespace std; typedef long long i64; const int p = 37; const int MOD = 1000000009 * 137; const int SZMAX = 666013 * 13; const int NMAX = 21010; struct Hashmap { int head[SZMAX]; int h[NMAX]; i64 val[NMAX]; int urm[NMAX], cnt = 0; i64 NIL = 0; i64 & end() { return NIL; } void clear() { while (cnt) { head[h[cnt] % SZMAX] = 0; cnt--; } } i64 & find(int x) { for (int i = head[x % SZMAX]; i; i = urm[i]) if (h[i] == x) return val[i]; return NIL; } i64 & operator[](int x) { i64 & ans = find(x); if (ans != NIL) return ans; cnt++; h[cnt] = x; val[cnt] = 0; urm[cnt] = cnt; swap(urm[cnt], head[x % SZMAX]); return val[cnt]; } } Hash, act; void solve() { int n; cin >> n; i64 ans = -n; vector <string> v(n); for (auto & i: v) { cin >> i; i64 h = 0; for (auto j : i) h = (31LL * h + j - 'a' + 1) % MOD; Hash[h]++; } for (auto s : v) { act.clear(); for (int beg = 0; beg < s.size(); beg++) { i64 h = 0; for (int i = beg; i < s.size(); i++) { h = (31LL * h + s[i] - 'a' + 1) % MOD; if (act.find(h) == act.end()) { act[h] = 1; ans += Hash.find(h); } } } } cout << ans << '\n'; } int main() { solve(); return 0; }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 2 ms | 760 KB | Output is correct |
2 | Correct | 2 ms | 504 KB | Output is correct |
3 | Correct | 3 ms | 1656 KB | Output is correct |
4 | Correct | 3 ms | 1528 KB | Output is correct |
5 | Correct | 13 ms | 10360 KB | Output is correct |
6 | Correct | 12 ms | 9976 KB | Output is correct |
7 | Correct | 27 ms | 22648 KB | Output is correct |
8 | Correct | 38 ms | 31736 KB | Output is correct |
9 | Correct | 44 ms | 34168 KB | Output is correct |
10 | Incorrect | 68 ms | 52472 KB | Output isn't correct |
11 | Correct | 63 ms | 48632 KB | Output is correct |
12 | Incorrect | 86 ms | 58616 KB | Output isn't correct |
13 | Correct | 54 ms | 33656 KB | Output is correct |
14 | Incorrect | 84 ms | 61432 KB | Output isn't correct |
15 | Incorrect | 92 ms | 61896 KB | Output isn't correct |
16 | Correct | 25 ms | 4572 KB | Output is correct |
17 | Correct | 19 ms | 1016 KB | Output is correct |
18 | Correct | 26 ms | 1144 KB | Output is correct |
19 | Incorrect | 89 ms | 57016 KB | Output isn't correct |
20 | Correct | 21 ms | 4984 KB | Output is correct |