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