#include <bits/stdc++.h>
#include <memory>
#pragma GCC optimize("O2")
#define endl '\n'
#define int long long
using namespace std;
//lo codeare desde 0 para que no me esten questionando
struct Trie{
vector<unique_ptr<Trie>> letras;
Trie():letras(26){}
void insert(const string &s)
{
Trie* nodo=this;
for(const auto &c:s)
{
int idx=c-'A';
if(!nodo->letras[idx])
nodo->letras[idx]=make_unique<Trie>();
nodo=nodo->letras[idx].get();
}
}
vector<char> query(const string &s)
{
vector<char> res;
Trie* nodo=this;
for(const auto &c:s)
{
int idx=c-'A';
if(!nodo->letras[idx])
nodo->letras[idx]=make_unique<Trie>();
nodo=nodo->letras[idx].get();
}
for(int i=0;i<26;i++)
if(nodo->letras[i])
res.push_back(i+'A');
return res;
}
};
int32_t main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cout.precision(0);
cout<<fixed;
int n;
cin>>n;
map<char,bool> o;
auto x=make_unique<Trie>();
for(int i=0;i<n;i++)
{
string s;
cin>>s;
x->insert(s);
}
string s;
cin>>s;
vector<char> res=x->query(s);
for(const auto &e:res)
o[e]=true;
int c=0;
for(int i=0;i<4;i++)
{
for(int j=0;j<8;j++)
{
c++;
if(c-3>=0&&c-3<26&&o[(c-3)+'A'])
{char ress=c-3+'A';cout<<ress;}else
cout<<'*';
}cout<<endl;
}
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |