提出 #53366745
ソースコード 拡げる
// #pragma GCC optimize("Ofast,unroll-loops")
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define inf (ll)1e18
#define pll pair<ll, ll>
#define vi vector<int>
#define vl vector<ll>
#define fi first
#define se second
#define lll __int128
const int N = 1e6 + 5;
struct H {
static const int N = 1e6 + 5, P = 131;
ll mod1 = 0, mod2 = 0; //双模数
ll p1[N], h1[N], p2[N], h2[N];
ll T1 = 1e5, T2 = 1e9;
vl t1 = { 3, 19, 43, 49, 57, 69, 103, 109, 129, 151, 153, 169, 183, 189, 193, 207, 213, 237, 267, 271,
279, 291, 297, 313, 333, 343, 357, 361, 363, 379, 391, 393, 403, 411, 417, 447, 459, 469 };
vl t2 = { 7, 9, 21, 33, 87, 93, 97, 103, 123, 181, 207, 223, 241, 271, 289, 297, 321, 349, 363, 403,
409, 411, 427, 433, 439, 447, 453, 459, 483, 513, 531, 579, 607, 613, 637, 663, 711, 753 };
void init(string s) { //下标从1开始
ll n = s.size() - 1;
if (!mod1) {
srand(time(0)); //随机模数
mod1 = T1 + t1[rand() % t1.size()], mod2 = T2 + t2[rand() % t2.size()];
}
p1[0] = p2[0] = 1, h1[0] = h2[0] = 0;
for(ll i = 1; i <= n; i++){
p1[i] = p1[i - 1] * P % mod1;
p2[i] = p2[i - 1] * P % mod2;
h1[i] = (h1[i - 1] * P % mod1 + s[i]) % mod1;
h2[i] = (h2[i - 1] * P % mod2 + s[i]) % mod2;
}
}
pll get(ll l, ll r){
return {(h1[r] + mod1 - h1[l - 1] * p1[r - l + 1] % mod1) % mod1,
(h2[r] + mod2 - h2[l - 1] * p2[r - l + 1] % mod2) % mod2};
}
bool equal(ll l1, ll r1, ll l2, ll r2){
return get(l1, r1) == get(l2, r2);
}
} hx;
ll n;
string s[N];
void solve() {
cin >> n;
for (ll i = 1; i <= n; i++)
cin >> s[i];
map<pll, ll> mp;
ll ans = 0;
for (ll i = 1; i <= n; i++) {
s[i] = '0' + s[i];
hx.init(s[i]);
for (ll j = 1; j < s[i].size(); j++) {
pll h = hx.get(1, j);
ans += mp[h];
mp[h]++;
}
}
cout << ans << endl;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
solve();
return 0;
}
提出情報
コンパイルエラー
Main.cpp: In function ‘void solve()’:
Main.cpp:55:26: warning: comparison of integer expressions of different signedness: ‘long long int’ and ‘std::__cxx11::basic_string<char>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
55 | for (ll j = 1; j < s[i].size(); j++) {
| ~~^~~~~~~~~~~~~
ジャッジ結果
| セット名 |
Sample |
All |
| 得点 / 配点 |
0 / 0 |
500 / 500 |
| 結果 |
|
|
| セット名 |
テストケース |
| Sample |
00_sample_01.txt, 00_sample_02.txt |
| All |
00_sample_01.txt, 00_sample_02.txt, 01_test_01.txt, 01_test_02.txt, 01_test_03.txt, 01_test_04.txt, 01_test_05.txt, 01_test_06.txt, 01_test_07.txt, 01_test_08.txt, 01_test_09.txt, 01_test_10.txt, 01_test_11.txt, 01_test_12.txt, 01_test_13.txt, 01_test_14.txt, 01_test_15.txt, 01_test_16.txt, 01_test_17.txt, 01_test_18.txt, 01_test_19.txt, 01_test_20.txt, 01_test_21.txt, 01_test_22.txt, 01_test_23.txt, 01_test_24.txt, 01_test_25.txt, 01_test_26.txt, 01_test_27.txt, 01_test_28.txt, 01_test_29.txt, 01_test_30.txt, 01_test_31.txt, 01_test_32.txt, 01_test_33.txt, 01_test_34.txt, 01_test_35.txt, 01_test_36.txt, 01_test_37.txt, 01_test_38.txt, 01_test_39.txt, 01_test_40.txt, 02_test_01.txt, 02_test_02.txt, 02_test_03.txt, 02_test_04.txt, 02_test_05.txt, 02_test_06.txt |
| ケース名 |
結果 |
実行時間 |
メモリ |
| 00_sample_01.txt |
AC |
15 ms |
34804 KiB |
| 00_sample_02.txt |
AC |
14 ms |
34900 KiB |
| 01_test_01.txt |
AC |
27 ms |
34968 KiB |
| 01_test_02.txt |
AC |
27 ms |
34896 KiB |
| 01_test_03.txt |
AC |
28 ms |
34916 KiB |
| 01_test_04.txt |
AC |
28 ms |
34916 KiB |
| 01_test_05.txt |
AC |
29 ms |
34904 KiB |
| 01_test_06.txt |
AC |
28 ms |
34840 KiB |
| 01_test_07.txt |
AC |
28 ms |
34956 KiB |
| 01_test_08.txt |
AC |
50 ms |
35288 KiB |
| 01_test_09.txt |
AC |
51 ms |
35344 KiB |
| 01_test_10.txt |
AC |
51 ms |
35344 KiB |
| 01_test_11.txt |
AC |
124 ms |
47476 KiB |
| 01_test_12.txt |
AC |
123 ms |
47364 KiB |
| 01_test_13.txt |
AC |
124 ms |
47860 KiB |
| 01_test_14.txt |
AC |
127 ms |
48028 KiB |
| 01_test_15.txt |
AC |
121 ms |
47204 KiB |
| 01_test_16.txt |
AC |
27 ms |
35268 KiB |
| 01_test_17.txt |
AC |
34 ms |
34924 KiB |
| 01_test_18.txt |
AC |
28 ms |
34844 KiB |
| 01_test_19.txt |
AC |
131 ms |
48960 KiB |
| 01_test_20.txt |
AC |
34 ms |
35032 KiB |
| 01_test_21.txt |
AC |
42 ms |
34800 KiB |
| 01_test_22.txt |
AC |
42 ms |
34884 KiB |
| 01_test_23.txt |
AC |
43 ms |
34896 KiB |
| 01_test_24.txt |
AC |
38 ms |
34960 KiB |
| 01_test_25.txt |
AC |
38 ms |
35020 KiB |
| 01_test_26.txt |
AC |
38 ms |
35032 KiB |
| 01_test_27.txt |
AC |
56 ms |
36232 KiB |
| 01_test_28.txt |
AC |
57 ms |
36232 KiB |
| 01_test_29.txt |
AC |
70 ms |
37836 KiB |
| 01_test_30.txt |
AC |
69 ms |
37924 KiB |
| 01_test_31.txt |
AC |
36 ms |
35320 KiB |
| 01_test_32.txt |
AC |
37 ms |
35444 KiB |
| 01_test_33.txt |
AC |
33 ms |
35312 KiB |
| 01_test_34.txt |
AC |
169 ms |
54248 KiB |
| 01_test_35.txt |
AC |
132 ms |
49108 KiB |
| 01_test_36.txt |
AC |
176 ms |
58188 KiB |
| 01_test_37.txt |
AC |
147 ms |
53432 KiB |
| 01_test_38.txt |
AC |
15 ms |
34860 KiB |
| 01_test_39.txt |
AC |
14 ms |
34992 KiB |
| 01_test_40.txt |
AC |
26 ms |
34916 KiB |
| 02_test_01.txt |
AC |
45 ms |
39844 KiB |
| 02_test_02.txt |
AC |
91 ms |
40724 KiB |
| 02_test_03.txt |
AC |
92 ms |
40600 KiB |
| 02_test_04.txt |
AC |
87 ms |
39892 KiB |
| 02_test_05.txt |
AC |
87 ms |
39968 KiB |
| 02_test_06.txt |
AC |
86 ms |
39884 KiB |