Submission #1176397

#TimeUsernameProblemLanguageResultExecution timeMemory
1176397youssefproofType Printer (IOI08_printer)C++20
100 / 100
147 ms119344 KiB
#include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> #define ll long long #define proof ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); #define tests ll T;cin >> T;while(T--) using namespace std; using namespace __gnu_pbds; #define ordered_set tree< int , null_type , less<int> , rb_tree_tag , tree_order_statistics_node_update> const ll mod = 1e9 + 7; struct Node{ ll cntr; ll nxt[26]; bool endofword = false; ll siz = 0; }; vector<Node>tri(1); void Insert(string &s) { ll curr = 0; for (int i = 0;i < s.size();i++) { if (!tri[curr].nxt[s[i]-'a']) { tri[curr].nxt[s[i] - 'a'] = tri.size(); tri.emplace_back(); } curr = tri[curr].nxt[s[i]-'a']; tri[curr].cntr++; tri[curr].siz = max(tri[curr].siz,(ll)s.size()); } tri[curr].endofword = true; } vector<char>ans; void dfs(ll node) { if (tri[node].endofword) ans.push_back('P'); vector<pair<ll,ll>>temp; for (int i = 0; i < 26; i++) { if(tri[node].nxt[i]) { temp.push_back({tri[tri[node].nxt[i]].siz,i}); } } sort(temp.begin(),temp.end()); for (auto [j,i] : temp) { ans.push_back(i + 'a'); dfs(tri[node].nxt[i]); ans.push_back('-'); } } void solve() { ll n;cin >> n; while (n--) { string s;cin >> s; Insert(s); } dfs(0); while(ans.back() == '-') ans.pop_back(); cout << ans.size() << '\n'; for (auto &i : ans) { cout << i << '\n'; } } int main() { proof; //tests solve(); }
#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...