Submission #1268497

#TimeUsernameProblemLanguageResultExecution timeMemory
1268497juan_alejandroKartomat (COCI17_kartomat)C++20
80 / 80
0 ms840 KiB
#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-4>=0&&c-4<26&&o[(c-4)+'A'])
    		{char ress=c-4+'A';cout<<ress;}else
    		cout<<'*';
    	}cout<<endl;
    }
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...