#include<stdio.h>
#include<math.h>
#include<vector>
#include<string>
#include<iostream>
#include<algorithm>
using namespace std;
class Solution {
public:
bool whetherrepeat(string repeat, string ori) {
if (repeat.length() < ori.length()) return false;
int repeat_i = 0, repeat_N = repeat.length();
for (int i = 0; i < ori.length(); i++) {
if (repeat_i == repeat_N) return false;
while (repeat[repeat_i] != ori[i]) {
repeat_i++;
if (repeat_i == repeat_N) {
return false;
}
}
repeat_i++;
}
return true;
}
string findLongestWord(string s, vector<string>& d) {
sort(d.begin(), d.end());
int N=0, d_N = d.size();
string res = "";
for (int i = 0; i < d_N; i++) {
if (d[i].length() <= N) continue;
else if (whetherrepeat(s, d[i])) {
N = d[i].length();
res = d[i];
}
}
return res;
}
};
int main() {
Solution sol;
string s="abpcplea";
vector<string> d = { "a","b","c","d","pea","abp","dafte","datfo","pcpleaa"};
cout << sol.findLongestWord(s, d)<<endl;
return 0;
}