Task: | Ctrl-F |
Sender: | aalto2024j_002 |
Submission time: | 2024-11-06 16:31:27 +0200 |
Language: | C++ (C++17) |
Status: | READY |
Result: | ACCEPTED |
test | verdict | time | |
---|---|---|---|
#1 | ACCEPTED | 0.00 s | details |
#2 | ACCEPTED | 0.00 s | details |
#3 | ACCEPTED | 0.00 s | details |
#4 | ACCEPTED | 0.00 s | details |
#5 | ACCEPTED | 0.00 s | details |
#6 | ACCEPTED | 0.00 s | details |
#7 | ACCEPTED | 0.00 s | details |
#8 | ACCEPTED | 0.00 s | details |
#9 | ACCEPTED | 0.00 s | details |
#10 | ACCEPTED | 0.00 s | details |
#11 | ACCEPTED | 0.01 s | details |
#12 | ACCEPTED | 0.00 s | details |
#13 | ACCEPTED | 0.00 s | details |
#14 | ACCEPTED | 0.00 s | details |
#15 | ACCEPTED | 0.00 s | details |
#16 | ACCEPTED | 0.00 s | details |
#17 | ACCEPTED | 0.01 s | details |
#18 | ACCEPTED | 0.00 s | details |
#19 | ACCEPTED | 0.00 s | details |
#20 | ACCEPTED | 0.00 s | details |
#21 | ACCEPTED | 0.00 s | details |
#22 | ACCEPTED | 0.00 s | details |
#23 | ACCEPTED | 0.00 s | details |
#24 | ACCEPTED | 0.00 s | details |
#25 | ACCEPTED | 0.00 s | details |
#26 | ACCEPTED | 0.00 s | details |
#27 | ACCEPTED | 0.00 s | details |
#28 | ACCEPTED | 0.00 s | details |
#29 | ACCEPTED | 0.00 s | details |
#30 | ACCEPTED | 0.00 s | details |
#31 | ACCEPTED | 0.00 s | details |
#32 | ACCEPTED | 0.00 s | details |
#33 | ACCEPTED | 0.00 s | details |
#34 | ACCEPTED | 0.00 s | details |
#35 | ACCEPTED | 0.00 s | details |
#36 | ACCEPTED | 0.00 s | details |
#37 | ACCEPTED | 0.00 s | details |
#38 | ACCEPTED | 0.00 s | details |
#39 | ACCEPTED | 0.00 s | details |
#40 | ACCEPTED | 0.00 s | details |
#41 | ACCEPTED | 0.00 s | details |
#42 | ACCEPTED | 0.00 s | details |
#43 | ACCEPTED | 0.00 s | details |
#44 | ACCEPTED | 0.00 s | details |
#45 | ACCEPTED | 0.00 s | details |
#46 | ACCEPTED | 0.00 s | details |
#47 | ACCEPTED | 0.00 s | details |
#48 | ACCEPTED | 0.00 s | details |
#49 | ACCEPTED | 0.00 s | details |
#50 | ACCEPTED | 0.00 s | details |
#51 | ACCEPTED | 0.00 s | details |
#52 | ACCEPTED | 0.00 s | details |
#53 | ACCEPTED | 0.00 s | details |
#54 | ACCEPTED | 0.00 s | details |
#55 | ACCEPTED | 0.00 s | details |
#56 | ACCEPTED | 0.00 s | details |
#57 | ACCEPTED | 0.00 s | details |
#58 | ACCEPTED | 0.00 s | details |
#59 | ACCEPTED | 0.00 s | details |
#60 | ACCEPTED | 0.00 s | details |
#61 | ACCEPTED | 0.00 s | details |
#62 | ACCEPTED | 0.00 s | details |
#63 | ACCEPTED | 0.00 s | details |
#64 | ACCEPTED | 0.00 s | details |
#65 | ACCEPTED | 0.00 s | details |
#66 | ACCEPTED | 0.00 s | details |
#67 | ACCEPTED | 0.00 s | details |
#68 | ACCEPTED | 0.00 s | details |
#69 | ACCEPTED | 0.00 s | details |
#70 | ACCEPTED | 0.00 s | details |
#71 | ACCEPTED | 0.00 s | details |
#72 | ACCEPTED | 0.00 s | details |
#73 | ACCEPTED | 0.00 s | details |
#74 | ACCEPTED | 0.00 s | details |
#75 | ACCEPTED | 0.00 s | details |
#76 | ACCEPTED | 0.00 s | details |
#77 | ACCEPTED | 0.00 s | details |
#78 | ACCEPTED | 0.00 s | details |
#79 | ACCEPTED | 0.00 s | details |
#80 | ACCEPTED | 0.00 s | details |
#81 | ACCEPTED | 0.00 s | details |
#82 | ACCEPTED | 0.00 s | details |
#83 | ACCEPTED | 0.00 s | details |
#84 | ACCEPTED | 0.01 s | details |
#85 | ACCEPTED | 0.01 s | details |
#86 | ACCEPTED | 0.01 s | details |
#87 | ACCEPTED | 0.01 s | details |
#88 | ACCEPTED | 0.01 s | details |
#89 | ACCEPTED | 0.02 s | details |
#90 | ACCEPTED | 0.02 s | details |
#91 | ACCEPTED | 0.02 s | details |
#92 | ACCEPTED | 0.02 s | details |
#93 | ACCEPTED | 0.02 s | details |
Compiler report
input/code.cpp: In constructor 'StringHash::StringHash(const string&, int, int)': input/code.cpp:11:17: warning: 'StringHash::s' will be initialized after [-Wreorder] 11 | std::string s; | ^ input/code.cpp:9:15: warning: 'const int StringHash::A' [-Wreorder] 9 | const int A; | ^ input/code.cpp:17:5: warning: when initialized here [-Wreorder] 17 | StringHash(const std::string& str, int baseA = 911382323, int modB = 972663749) | ^~~~~~~~~~ input/code.cpp: In function 'int main()': input/code.cpp:75:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare] 75 | for(int i=0; i<(b.size()-len); i++){ | ~^~~~~~~~~~~~~~~ input/code.cpp:84:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-...
Code
#include <iostream> #include <vector> #include <string> using namespace std; class StringHash { private: const int A; const int B; std::string s; std::vector<long long> h; std::vector<long long> p; public: StringHash(const std::string& str, int baseA = 911382323, int modB = 972663749) : s(str), A(baseA), B(modB), h(str.size()), p(str.size()) { preprocess(); } void preprocess() { int n = s.size(); h[0] = s[0] % B; p[0] = 1; for (int k = 1; k < n; ++k) { h[k] = (h[k - 1] * A + s[k]) % B; p[k] = (p[k - 1] * A) % B; } } long long getHash() const { return h[s.size() - 1]; } long long getSubstringHash(int a, int b) const { if (a == 0) { return h[b]; } long long result = (h[b] - h[a - 1] * p[b - a + 1] % B + B) % B; return result; } static bool areEqual(const StringHash& hash1, int start1, int end1, const StringHash& hash2, int start2, int end2) { if (end1 - start1 != end2 - start2) return false; return hash1.getSubstringHash(start1, end1) == hash2.getSubstringHash(start2, end2); } }; int main() { string a,b; cin >> a >> b; StringHash F(a); StringHash T(b); int len = a.size()-1; int count = 0; vector<int> res; for(int i=0; i<(b.size()-len); i++){ if(T.getSubstringHash(i,i+len)==F.getHash()){ count += 1; res.push_back(i); } } cout << count << endl; for(int i=0; i<res.size(); i++){ cout<<res[i]+1; if(i!=res.size()-1)cout << " "; } cout << endl; }
Test details
Test 1
Verdict: ACCEPTED
input |
---|
q q |
correct output |
---|
1 1 |
user output |
---|
1 1 |
Test 2
Verdict: ACCEPTED
input |
---|
wr wn |
correct output |
---|
0 |
user output |
---|
0 |
Test 3
Verdict: ACCEPTED
input |
---|
sy sy |
correct output |
---|
1 1 |
user output |
---|
1 1 |
Test 4
Verdict: ACCEPTED
input |
---|
su sub |
correct output |
---|
1 1 |
user output |
---|
1 1 |
Test 5
Verdict: ACCEPTED
input |
---|
nrd yjm |
correct output |
---|
0 |
user output |
---|
0 |
Test 6
Verdict: ACCEPTED
input |
---|
a bbbb |
correct output |
---|
0 |
user output |
---|
0 |
Test 7
Verdict: ACCEPTED
input |
---|
mtn mtnr |
correct output |
---|
1 1 |
user output |
---|
1 1 |
Test 8
Verdict: ACCEPTED
input |
---|
bnp lbnpr |
correct output |
---|
1 2 |
user output |
---|
1 2 |
Test 9
Verdict: ACCEPTED
input |
---|
bab aabbb |
correct output |
---|
0 |
user output |
---|
0 |
Test 10
Verdict: ACCEPTED
input |
---|
aba babab |
correct output |
---|
1 2 |
user output |
---|
1 2 |
Test 11
Verdict: ACCEPTED
input |
---|
aabb bbaab |
correct output |
---|
0 |
user output |
---|
0 |
Test 12
Verdict: ACCEPTED
input |
---|
gx oqxwd |
correct output |
---|
0 |
user output |
---|
0 |
Test 13
Verdict: ACCEPTED
input |
---|
noe noemx |
correct output |
---|
1 1 |
user output |
---|
1 1 |
Test 14
Verdict: ACCEPTED
input |
---|
bbbbbabb aaababaaab |
correct output |
---|
0 |
user output |
---|
0 |
Test 15
Verdict: ACCEPTED
input |
---|
caaac aaababbcbc |
correct output |
---|
0 |
user output |
---|
0 |
Test 16
Verdict: ACCEPTED
input |
---|
ayoyl mkiiefsqdh |
correct output |
---|
0 |
user output |
---|
0 |
Test 17
Verdict: ACCEPTED
input |
---|
svhdno xlxadbfgbc |
correct output |
---|
0 |
user output |
---|
0 |
Test 18
Verdict: ACCEPTED
input |
---|
accc bcbaacaaca |
correct output |
---|
0 |
user output |
---|
0 |
Test 19
Verdict: ACCEPTED
input |
---|
wvf jxzmcpktjn |
correct output |
---|
0 |
user output |
---|
0 |
Test 20
Verdict: ACCEPTED
input |
---|
ac aabacbabbb |
correct output |
---|
1 4 |
user output |
---|
1 4 |
Test 21
Verdict: ACCEPTED
input |
---|
l uilzslziog |
correct output |
---|
2 3 6 |
user output |
---|
2 3 6 |
Test 22
Verdict: ACCEPTED
input |
---|
zgwjnvgka pltkknwmyo |
correct output |
---|
0 |
user output |
---|
0 |
Test 23
Verdict: ACCEPTED
input |
---|
d nmmadidafw |
correct output |
---|
2 5 7 |
user output |
---|
2 5 7 |
Test 24
Verdict: ACCEPTED
input |
---|
amqltvmp amqltvmpfa |
correct output |
---|
1 1 |
user output |
---|
1 1 |
Test 25
Verdict: ACCEPTED
input |
---|
ar mfsykcmfax |
correct output |
---|
0 |
user output |
---|
0 |
Test 26
Verdict: ACCEPTED
input |
---|
xa twgcnsajxa |
correct output |
---|
1 9 |
user output |
---|
1 9 |
Test 27
Verdict: ACCEPTED
input |
---|
bbb babbabbbbb |
correct output |
---|
3 6 7 8 |
user output |
---|
3 6 7 8 |
Test 28
Verdict: ACCEPTED
input |
---|
bcbaa aacabaabbb |
correct output |
---|
0 |
user output |
---|
0 |
Test 29
Verdict: ACCEPTED
input |
---|
ba abcacbaaca |
correct output |
---|
1 6 |
user output |
---|
1 6 |
Test 30
Verdict: ACCEPTED
input |
---|
djs nboibdjsfe |
correct output |
---|
1 6 |
user output |
---|
1 6 |
Test 31
Verdict: ACCEPTED
input |
---|
nve xbuukrcqfo |
correct output |
---|
0 |
user output |
---|
0 |
Test 32
Verdict: ACCEPTED
input |
---|
nlwgexw ftarlzogwa |
correct output |
---|
0 |
user output |
---|
0 |
Test 33
Verdict: ACCEPTED
input |
---|
i tkgsdgircb |
correct output |
---|
1 7 |
user output |
---|
1 7 |
Test 34
Verdict: ACCEPTED
input |
---|
ccccba bccbcbabca |
correct output |
---|
0 |
user output |
---|
0 |
Test 35
Verdict: ACCEPTED
input |
---|
bba ababaaabba |
correct output |
---|
1 8 |
user output |
---|
1 8 |
Test 36
Verdict: ACCEPTED
input |
---|
babbb ababaabaaa |
correct output |
---|
0 |
user output |
---|
0 |
Test 37
Verdict: ACCEPTED
input |
---|
abbabaabaa aaabbaaabb |
correct output |
---|
0 |
user output |
---|
0 |
Test 38
Verdict: ACCEPTED
input |
---|
sbzifzjntu sbzifzjntu |
correct output |
---|
1 1 |
user output |
---|
1 1 |
Test 39
Verdict: ACCEPTED
input |
---|
aaaaaa aaabbaabaa |
correct output |
---|
0 |
user output |
---|
0 |
Test 40
Verdict: ACCEPTED
input |
---|
abbbab aaaababbba |
correct output |
---|
0 |
user output |
---|
0 |
Test 41
Verdict: ACCEPTED
input |
---|
jjhzv vxtmwjjhzv |
correct output |
---|
1 6 |
user output |
---|
1 6 |
Test 42
Verdict: ACCEPTED
input |
---|
ohdekkui naemwyyvzo |
correct output |
---|
0 |
user output |
---|
0 |
Test 43
Verdict: ACCEPTED
input |
---|
ba ccbbabaccc |
correct output |
---|
2 4 6 |
user output |
---|
2 4 6 |
Test 44
Verdict: ACCEPTED
input |
---|
qltvmpfafstgegcdrryvainxvfpasw... |
correct output |
---|
1 3 |
user output |
---|
1 3 |
Test 45
Verdict: ACCEPTED
input |
---|
armfsykcmfaxmvycwxs scnxuwpetq... |
correct output |
---|
0 |
user output |
---|
0 |
Test 46
Verdict: ACCEPTED
input |
---|
iazfqzyetdvokklp twgcnsajxaxha... |
correct output |
---|
1 63 |
user output |
---|
1 63 |
Test 47
Verdict: ACCEPTED
input |
---|
bbb babbabbbbbbabaabababbaaaba... |
correct output |
---|
14 6 7 8 9 52 53 58 59 64 76 77 7... |
user output |
---|
14 6 7 8 9 52 53 58 59 64 76 77 7... |
Test 48
Verdict: ACCEPTED
input |
---|
bcbaa aacabaabbbaccbbabcaacaaa... |
correct output |
---|
0 |
user output |
---|
0 |
Test 49
Verdict: ACCEPTED
input |
---|
ba abcacbaacacaaaccaabcbcccbac... |
correct output |
---|
11 6 25 38 44 51 70 72 77 92 94 9... |
user output |
---|
11 6 25 38 44 51 70 72 77 92 94 9... |
Test 50
Verdict: ACCEPTED
input |
---|
boibdjsferqewbvyroecpso nboibd... |
correct output |
---|
1 2 |
user output |
---|
1 2 |
Test 51
Verdict: ACCEPTED
input |
---|
nvexbuukrcqfoqbwjbytbowawfbmqh... |
correct output |
---|
0 |
user output |
---|
0 |
Test 52
Verdict: ACCEPTED
input |
---|
nlwgexwftarlzogwazqiwotpahcqhf... |
correct output |
---|
0 |
user output |
---|
0 |
Test 53
Verdict: ACCEPTED
input |
---|
xjjeioibiv tkgsdgircbrduazzqpf... |
correct output |
---|
1 66 |
user output |
---|
1 66 |
Test 54
Verdict: ACCEPTED
input |
---|
ccccba bccbcbabcacaccccbcccaac... |
correct output |
---|
0 |
user output |
---|
0 |
Test 55
Verdict: ACCEPTED
input |
---|
bba ababaaabbaabbaaabaabaaaabb... |
correct output |
---|
11 8 12 26 30 37 42 66 72 82 88 9... |
user output |
---|
11 8 12 26 30 37 42 66 72 82 88 9... |
Test 56
Verdict: ACCEPTED
input |
---|
babbb ababaabaaabbaabababbaaaa... |
correct output |
---|
2 46 61 |
user output |
---|
2 46 61 |
Test 57
Verdict: ACCEPTED
input |
---|
abbabaabaa aaabbaaabbbbaabbabb... |
correct output |
---|
0 |
user output |
---|
0 |
Test 58
Verdict: ACCEPTED
input |
---|
sbzifzjntuzmiqdhjoiajrskxxntgh... |
correct output |
---|
1 1 |
user output |
---|
1 1 |
Test 59
Verdict: ACCEPTED
input |
---|
aaaaaa aaabbaabaababaaabbaabbb... |
correct output |
---|
0 |
user output |
---|
0 |
Test 60
Verdict: ACCEPTED
input |
---|
abbbab aaaababbbaaabbaaabaabab... |
correct output |
---|
0 |
user output |
---|
0 |
Test 61
Verdict: ACCEPTED
input |
---|
ghauoeqbgszeeppknnlffspwvyytbm... |
correct output |
---|
1 40 |
user output |
---|
1 40 |
Test 62
Verdict: ACCEPTED
input |
---|
ohdekkuinaemwyyvzofxzwgwaryuxm... |
correct output |
---|
0 |
user output |
---|
0 |
Test 63
Verdict: ACCEPTED
input |
---|
ba ccbbabaccccccccaacaabbbbaaa... |
correct output |
---|
9 4 6 24 35 54 72 76 83 91 |
user output |
---|
9 4 6 24 35 54 72 76 83 91 |
Test 64
Verdict: ACCEPTED
input |
---|
qltvmpfafstgegcdrryvainxvfpasw... |
correct output |
---|
1 3 |
user output |
---|
1 3 |
Test 65
Verdict: ACCEPTED
input |
---|
armfsykcmfaxmvycwxsscnxuwpetqr... |
correct output |
---|
0 |
user output |
---|
0 |
Test 66
Verdict: ACCEPTED
input |
---|
ljsoejwqaebfjygmnrdcqoowvcgsei... |
correct output |
---|
1 569 |
user output |
---|
1 569 |
Test 67
Verdict: ACCEPTED
input |
---|
bbb babbabbbbbbabaabababbaaaba... |
correct output |
---|
122 6 7 8 9 52 53 58 59 64 76 77 7... |
user output |
---|
122 6 7 8 9 52 53 58 59 64 76 77 7... |
Test 68
Verdict: ACCEPTED
input |
---|
bcbaa aacabaabbbaccbbabcaacaaa... |
correct output |
---|
2 128 811 |
user output |
---|
2 128 811 |
Test 69
Verdict: ACCEPTED
input |
---|
ba abcacbaacacaaaccaabcbcccbac... |
correct output |
---|
115 6 25 38 44 51 70 72 77 92 94 9... |
user output |
---|
115 6 25 38 44 51 70 72 77 92 94 9... |
Test 70
Verdict: ACCEPTED
input |
---|
xbdpqykclzyjerkdnyfqrynxbloyps... |
correct output |
---|
1 174 |
user output |
---|
1 174 |
Test 71
Verdict: ACCEPTED
input |
---|
nvexbuukrcqfoqbwjbytbowawfbmqh... |
correct output |
---|
0 |
user output |
---|
0 |
Test 72
Verdict: ACCEPTED
input |
---|
nlwgexwftarlzogwazqiwotpahcqhf... |
correct output |
---|
0 |
user output |
---|
0 |
Test 73
Verdict: ACCEPTED
input |
---|
dqzgitxhpsubvrsocoxjjeioibivfs... |
correct output |
---|
1 48 |
user output |
---|
1 48 |
Test 74
Verdict: ACCEPTED
input |
---|
ccccba bccbcbabcacaccccbcccaac... |
correct output |
---|
3 229 277 593 |
user output |
---|
3 229 277 593 |
Test 75
Verdict: ACCEPTED
input |
---|
bba ababaaabbaabbaaabaabaaaabb... |
correct output |
---|
121 8 12 26 30 37 42 66 72 82 88 9... |
user output |
---|
121 8 12 26 30 37 42 66 72 82 88 9... |
Test 76
Verdict: ACCEPTED
input |
---|
babbb ababaabaaabbaabababbaaaa... |
correct output |
---|
29 46 61 118 126 252 318 330 350 ... |
user output |
---|
29 46 61 118 126 252 318 330 350 ... |
Test 77
Verdict: ACCEPTED
input |
---|
abbabaabaa aaabbaaabbbbaabbabb... |
correct output |
---|
2 167 584 |
user output |
---|
2 167 584 |
Test 78
Verdict: ACCEPTED
input |
---|
yxlvjhoqnrjzixyyxqypyfcmeujvyn... |
correct output |
---|
1 36 |
user output |
---|
1 36 |
Test 79
Verdict: ACCEPTED
input |
---|
aaaaaa aaabbaabaababaaabbaabbb... |
correct output |
---|
16 147 148 222 223 224 225 303 30... |
user output |
---|
16 147 148 222 223 224 225 303 30... |
Test 80
Verdict: ACCEPTED
input |
---|
abbbab aaaababbbaaabbaaabaabab... |
correct output |
---|
13 208 278 449 539 572 637 698 82... |
user output |
---|
13 208 278 449 539 572 637 698 82... |
Test 81
Verdict: ACCEPTED
input |
---|
tkjzptqkkzkyuknjbtdhbxzbvdynoe... |
correct output |
---|
1 398 |
user output |
---|
1 398 |
Test 82
Verdict: ACCEPTED
input |
---|
ohdekkuinaemwyyvzofxzwgwaryuxm... |
correct output |
---|
0 |
user output |
---|
0 |
Test 83
Verdict: ACCEPTED
input |
---|
ba ccbbabaccccccccaacaabbbbaaa... |
correct output |
---|
106 4 6 24 35 54 72 76 83 91 120 1... |
user output |
---|
106 4 6 24 35 54 72 76 83 91 120 1... |
Test 84
Verdict: ACCEPTED
input |
---|
uimfxocfupiquprsfvwrktflasqzwg... |
correct output |
---|
1 12309 |
user output |
---|
1 12309 |
Test 85
Verdict: ACCEPTED
input |
---|
armfsykcmfaxmvycwxsscnxuwpetqr... |
correct output |
---|
0 |
user output |
---|
0 |
Test 86
Verdict: ACCEPTED
input |
---|
bvifyeheqbketqmweyvfwxslczpinq... |
correct output |
---|
1 72135 |
user output |
---|
1 72135 |
Test 87
Verdict: ACCEPTED
input |
---|
bbb babbabbbbbbabaabababbaaaba... |
correct output |
---|
12448 6 7 8 9 52 53 58 59 64 76 77 7... |
user output |
---|
12448 6 7 8 9 52 53 58 59 64 76 77 7... |
Test 88
Verdict: ACCEPTED
input |
---|
bcbaa aacabaabbbaccbbabcaacaaa... |
correct output |
---|
415 128 811 1185 1404 1540 1595 18... |
user output |
---|
415 128 811 1185 1404 1540 1595 18... |
Test 89
Verdict: ACCEPTED
input |
---|
ba abcacbaacacaaaccaabcbcccbac... |
correct output |
---|
22302 6 25 38 44 51 70 72 77 92 94 9... |
user output |
---|
22302 6 25 38 44 51 70 72 77 92 94 9... |
Test 90
Verdict: ACCEPTED
input |
---|
hdoncwccngxcinaaxlqqaqeeddicpb... |
correct output |
---|
1 25985 |
user output |
---|
1 25985 |
Test 91
Verdict: ACCEPTED
input |
---|
nvexbuukrcqfoqbwjbytbowawfbmqh... |
correct output |
---|
0 |
user output |
---|
0 |
Test 92
Verdict: ACCEPTED
input |
---|
nlwgexwftarlzogwazqiwotpahcqhf... |
correct output |
---|
0 |
user output |
---|
0 |
Test 93
Verdict: ACCEPTED
input |
---|
psvihsxqpawhwrzhxgbpkgaeoxkrtp... |
correct output |
---|
1 108381 |
user output |
---|
1 108381 |