| Task: | Matching |
| Sender: | eax511 |
| Submission time: | 2016-10-22 14:10:15 +0300 |
| Language: | C++ |
| Status: | READY |
| Result: | WRONG ANSWER |
| test | verdict | time | |
|---|---|---|---|
| #1 | ACCEPTED | 0.04 s | details |
| #2 | ACCEPTED | 0.07 s | details |
| #3 | ACCEPTED | 0.07 s | details |
| #4 | WRONG ANSWER | 0.08 s | details |
| #5 | WRONG ANSWER | 0.11 s | details |
| #6 | WRONG ANSWER | 0.07 s | details |
| #7 | ACCEPTED | 0.11 s | details |
| #8 | ACCEPTED | 0.09 s | details |
| #9 | ACCEPTED | 0.10 s | details |
| #10 | ACCEPTED | 0.10 s | details |
| #11 | ACCEPTED | 0.11 s | details |
| #12 | ACCEPTED | 0.09 s | details |
Compiler report
input/code.cpp: In function 'int main()':
input/code.cpp:33:31: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for(int i=p.size();i<v.size();++i){
^
input/code.cpp:34: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;}
vector<int> zAlgorithm(const std::string& S){
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;
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);
std::vector<int> m;
for(int i=p.size();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+1<<'\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: WRONG ANSWER
| input |
|---|
| ??????????????????????????????... |
| correct output |
|---|
| 1 124684 |
| user output |
|---|
| 0 |
Test 5
Verdict: WRONG ANSWER
| input |
|---|
| ???????????????????????b??????... |
| correct output |
|---|
| 1 162249 |
| user output |
|---|
| 0 |
Test 6
Verdict: WRONG ANSWER
| input |
|---|
| ??????????????????????????????... |
| correct output |
|---|
| 1 61191 |
| user output |
|---|
| 0 |
Test 7
Verdict: ACCEPTED
| input |
|---|
| ??????????????????????????????... |
| correct output |
|---|
| 200001 1 2 3 4 ... |
| user output |
|---|
| 200001 1 2 3 4 ... |
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: ACCEPTED
| input |
|---|
| ??????????????????????????????... |
| correct output |
|---|
| 300001 1 2 3 4 ... |
| user output |
|---|
| 300001 1 2 3 4 ... |
Test 11
Verdict: ACCEPTED
| input |
|---|
| ??????????????????????????????... |
| correct output |
|---|
| 300000 1 2 3 4 ... |
| user output |
|---|
| 300000 1 2 3 4 ... |
Test 12
Verdict: ACCEPTED
| input |
|---|
| aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa... |
| correct output |
|---|
| 390001 1 2 3 4 ... |
| user output |
|---|
| 390001 1 2 3 4 ... |
