Submission #1175624

#TimeUsernameProblemLanguageResultExecution timeMemory
1175624bassmala_aboodType Printer (IOI08_printer)C++20
100 / 100
164 ms69632 KiB
#include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> using namespace __gnu_pbds; #define ordered_set tree<int, null_type, less<>, rb_tree_tag, tree_order_statistics_node_update> #define ordered_multiset tree <int, null_type, less_equal <int>, rb_tree_tag, tree_order_statistics_node_update> using namespace std; #define pb push_back #define F first #define S second #define all(a) a.begin(),a.end() #define rall(a) a.rbegin(),a.rend() #define sz(x) ((int)(x).size()) #define ll long long //#define int ll #define popcount(x) __builtin_popcountll(x) //__builtin_clzll()->leading zeros in binary #define inf 1e18 #define el "\n" #define Bassmala ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); vector<int> take(int n){ vector<int>v(n); for(int i=0;i<n;i++)cin>>v[i]; return v; } //--------------------------------global variables----------------------------------// string ans; const int sz=26; //---------------------------------functions----------------------------------------// struct Trie{ struct Node{ int child[sz]{}; bool e=0; }; vector<Node>trie; Trie(){trie.emplace_back();} void insert(string &s){ int idx=0,n=sz(s); for(int i=0;i<n;i++) { int nxt=s[i]-'a'; if (trie[idx].child[nxt] == 0) { trie[idx].child[nxt] = sz(trie); trie.emplace_back(); } idx = trie[idx].child[nxt]; } trie[idx].e=1; } unordered_map<int,int>depth; int dep(int idx=0){ int ret=0; for(int i=0;i<26;i++){ if(!trie[idx].child[i])continue; ret=max(ret,dep(trie[idx].child[i])); } return depth[idx]=ret+1; } void query(int idx=0){ if(trie[idx].e)ans.pb('P'); vector<pair<int,int>>in; for(int i=0;i<26;i++){ if(!trie[idx].child[i])continue; in.pb({depth[trie[idx].child[i]],i}); } sort(all(in)); for(auto it:in){ ans.pb('a'+it.S); query(trie[idx].child[it.S]); ans.pb('-'); } } }; //-----------------------------------code-------------------------------------------// void pewpew() { int n;cin>>n; Trie tr; for(int i=0;i<n;i++){ string s;cin>>s; tr.insert(s); } tr.dep(); tr.query(); while(sz(ans) and ans.back()=='-')ans.pop_back(); cout<<sz(ans)<<el; for(auto it:ans)cout<<it<<el; } //----------------------------------------------------------------------------------// signed main() { /* ☯︎☯︎☯︎ */ Bassmala /* ☯︎☯︎☯︎ */ //freopen("input.txt", "r", stdin); //freopen("output.txt","w",stdout); int x_x = 1; //cin >> x_x; while (x_x--) { pewpew(); } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...