Task: | Matching |
Sender: | eax511 |
Submission time: | 2016-10-22 14:28:30 +0300 |
Language: | C++ |
Status: | READY |
Result: | TIME LIMIT EXCEEDED |
test | verdict | time | |
---|---|---|---|
#1 | ACCEPTED | 0.04 s | details |
#2 | ACCEPTED | 0.07 s | details |
#3 | ACCEPTED | 0.07 s | details |
#4 | ACCEPTED | 1.41 s | details |
#5 | ACCEPTED | 1.56 s | details |
#6 | ACCEPTED | 0.99 s | details |
#7 | TIME LIMIT EXCEEDED | -- | details |
#8 | ACCEPTED | 0.17 s | details |
#9 | ACCEPTED | 4.61 s | details |
#10 | TIME LIMIT EXCEEDED | -- | details |
#11 | TIME LIMIT EXCEEDED | -- | details |
#12 | ACCEPTED | 5.07 s | details |
Compiler report
input/code.cpp: In function 'int main()': input/code.cpp:37:33: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] for(int i=p.size()+1;i<v.size();++i){ ^ input/code.cpp:38:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] if(v[i]>=p.size())m.emplace_back(i-p.size()); ^
Code
#include <vector> #include <string> #include <iostream> using namespace std; bool cmpchr(char a,char b){return a!='#'&&b!='#'&&(a=='?'||b=='?'||a==b);} vector<int> zAlgorithm(const std::string& S){ //cout<<S<<'\n'; int n=S.size(); vector<int> ret(n,0); int L=0; int R=0; for(int i=1;i<n;++i){ if(i>R){ L=i; R=i; while(R<n&&cmpchr(S[R-L],S[R]))++R; ret[i]=R-L; --R; } else if(ret[i-L]<R-i+1)ret[i]=ret[i-L]; else { L=i; R=i; while(R<n&&cmpchr(S[R-L],S[R]))++R; ret[i]=R-L; --R; } } return ret; } int main(){ string p,s; cin>>p>>s; auto v = zAlgorithm(p+'#'+s); //for(auto& it : v)cout<<it<<' '; //cout<<'\n'; std::vector<int> m; for(int i=p.size()+1;i<v.size();++i){ if(v[i]>=p.size())m.emplace_back(i-p.size()); } cout<<m.size()<<'\n'; for(auto& it : m)cout<<it<<'\n'; }
Test details
Test 1
Verdict: ACCEPTED
input |
---|
a?b
aabb |
correct output |
---|
2 1 2 |
user output |
---|
2 1 2 |
Test 2
Verdict: ACCEPTED
input |
---|
???hj?????bcg??c????f????p???l... |
correct output |
---|
1 225711 |
user output |
---|
1 225711 |
Test 3
Verdict: ACCEPTED
input |
---|
kvioxrw?wrmrljtbkonrczszi?sxff... |
correct output |
---|
1 318678 |
user output |
---|
1 318678 |
Test 4
Verdict: ACCEPTED
input |
---|
??????????????????????????????... |
correct output |
---|
1 124684 |
user output |
---|
1 124684 |
Test 5
Verdict: ACCEPTED
input |
---|
???????????????????????b??????... |
correct output |
---|
1 162249 |
user output |
---|
1 162249 |
Test 6
Verdict: ACCEPTED
input |
---|
??????????????????????????????... |
correct output |
---|
1 61191 |
user output |
---|
1 61191 |
Test 7
Verdict: TIME LIMIT EXCEEDED
input |
---|
??????????????????????????????... |
correct output |
---|
200001 1 2 3 4 ... |
user output |
---|
(empty) |
Test 8
Verdict: ACCEPTED
input |
---|
??????????????????????????????... |
correct output |
---|
399901 1 2 3 4 ... |
user output |
---|
399901 1 2 3 4 ... |
Test 9
Verdict: ACCEPTED
input |
---|
??????????????????????????????... |
correct output |
---|
390001 1 2 3 4 ... |
user output |
---|
390001 1 2 3 4 ... |
Test 10
Verdict: TIME LIMIT EXCEEDED
input |
---|
??????????????????????????????... |
correct output |
---|
300001 1 2 3 4 ... |
user output |
---|
(empty) |
Test 11
Verdict: TIME LIMIT EXCEEDED
input |
---|
??????????????????????????????... |
correct output |
---|
300000 1 2 3 4 ... |
user output |
---|
(empty) |
Test 12
Verdict: ACCEPTED
input |
---|
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa... |
correct output |
---|
390001 1 2 3 4 ... |
user output |
---|
390001 1 2 3 4 ... |