/
10567.cpp
43 lines (35 loc) · 918 Bytes
/
10567.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <iostream>
#include <map>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
string in;
int q;
map<char, vector<int> > candidates;
int main() {
cin >> in;
cin >> q;
for (int i = 0; i < in.size(); i++) candidates[in[i]].push_back(i);
for (int i = 0; i < q; i++) {
cin >> in;
if (candidates.find(in[0]) == candidates.end()) {
cout << "Not matched" << endl;
continue;
}
int start = candidates[in[0]][0], end = start;
bool exited = false;
for (int j = 1; j < in.size(); j++) {
auto cand = lower_bound(candidates[in[j]].begin(), candidates[in[j]].end(), end + 1);
if (cand == candidates[in[j]].end()) {
cout << "Not matched" << endl;
exited = true;
break;
} else {
end = *cand;
}
}
if (not exited) cout << "Matched " << start << ' ' << end << endl;
}
return 0;
}