Submission #1176517

#TimeUsernameProblemLanguageResultExecution timeMemory
1176517justokType Printer (IOI08_printer)C++20
0 / 100
382 ms192584 KiB
#include <bits/stdc++.h> // + using namespace std; // +++ #define inf 1e18 // + #define FADY ios_base::sync_with_stdio(0), cin.tie(0); files(); #define all(a) a.begin(), a.end() #define int long long string YN[2] = {"No", "Yes"}; void files() { #ifndef ONLINE_JUDGE freopen("input.txt", "r", stdin), freopen("output.txt", "w", stdout); #endif } struct Trie { struct Node { int vis[26]{}; int frq = 0, en = 0; }; vector<Node> tree; Trie() { tree.emplace_back(); } void add(string s) { int idx = 0; for (auto &i : s) { int ch = i - 'a'; if (tree[idx].vis[ch] == 0) { tree[idx].vis[ch] = tree.size(); tree.emplace_back(); } idx = tree[idx].vis[ch]; tree[idx].frq++; } tree[idx].en++; } vector<char> ans; vector<char> go(string s) { ans.clear(); dfs(0, 0, s, 1); return ans; } void dfs(int idx, int i, string &s, bool cur) { if (tree[idx].en) { ans.push_back('P'); } for (int j = 0; j < 26; ++j) { int nxt = tree[idx].vis[j]; if (nxt) { if (!cur || i >= s.size() || j != s[i] - 'a') { ans.push_back(j + 'a'); dfs(nxt, i + 1, s, 0); ans.push_back('-'); } } } if (i < s.size() && cur) { ans.push_back(s[i]); dfs(tree[idx].vis[s[i] - 'a'], i + 1, s, 1); } } }; void JustOK() { int n; cin >> n; Trie t; string s[n]; for (int i = 0; i < n; ++i) { cin >> s[i]; t.add(s[i]); } vector<char> ans; for (int i = 0; i < n; ++i) { auto cur = t.go(s[i]); if (ans.empty() || cur.size() < ans.size()) { ans = cur; } } cout << ans.size() << '\n'; for (auto &i : ans) cout << i << '\n'; } signed main() { FADY; int tc = 1; // cin >> tc; while (tc--) JustOK(); }

Compilation message (stderr)

printer.cpp: In function 'void files()':
printer.cpp:11:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   11 |     freopen("input.txt", "r", stdin), freopen("output.txt", "w", stdout);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
printer.cpp:11:46: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   11 |     freopen("input.txt", "r", stdin), freopen("output.txt", "w", stdout);
      |                                       ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
#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...