Submission details
Task:Matching
Sender:eax511
Submission time:2016-10-22 14:10:15 +0300
Language:C++
Status:READY
Result:
Test results
testverdicttime
#1ACCEPTED0.04 sdetails
#2ACCEPTED0.07 sdetails
#3ACCEPTED0.07 sdetails
#40.08 sdetails
#50.11 sdetails
#60.07 sdetails
#7ACCEPTED0.11 sdetails
#8ACCEPTED0.09 sdetails
#9ACCEPTED0.10 sdetails
#10ACCEPTED0.10 sdetails
#11ACCEPTED0.11 sdetails
#12ACCEPTED0.09 sdetails

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:

input
??????????????????????????????...

correct output
1
124684

user output
0

Test 5

Verdict:

input
???????????????????????b??????...

correct output
1
162249

user output
0

Test 6

Verdict:

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
...