Submission #1247288

#TimeUsernameProblemLanguageResultExecution timeMemory
1247288inkvizytorType Printer (IOI08_printer)C++20
80 / 100
273 ms327680 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long struct vert { bool s = 0; map<int, int> mp; int o = -1; char c = '_'; }; int add(int v, vector<vert> &tr, string &s, int i) { if (i == (int)s.size()) { tr[v].s = 1; return v; } if (!tr[v].mp.contains(s[i]-'a')) { tr[v].mp[s[i]-'a'] = tr.size(); tr.push_back(vert()); tr[tr.size()-1].o = v; tr[tr.size()-1].c = s[i]; } return add(tr[v].mp[s[i]-'a'], tr, s, i+1); } void print(int v, vector<vert> &tr, string &s) { vector<bool> odw (tr.size(), 0); vector<queue<int>> q (tr.size()); for (int i = 0; i < (int)tr.size(); i++) { for (auto j : tr[i].mp) { q[i].push(j.second); } tr[i].mp = map<int, int>(); } while (v != -1) { if (tr[v].s) { s.push_back('P'); tr[v].s = 0; } if (q[v].empty()) { s.push_back(tr[v].c); odw[v] = 1; v = tr[v].o; continue; } int x = q[v].front(); q[v].pop(); if (!odw[x]) { s.push_back('-'); v = x; } } } int main() { ios_base::sync_with_stdio(0); cin.tie(0); int n; cin >> n; pair<int, int> a = {0, 0}; vector<vert> tr (1); for (int i = 0; i < n; i++) { string s; cin >> s; a = max(a, {s.size(), add(0, tr, s, 0)}); } string s; print(a.second, tr, s); if (s[s.size()-1] == '_') { s.pop_back(); } cout << s.size() << '\n'; reverse(s.begin(), s.end()); for (char c : s) { cout << c << '\n'; } }
#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...