Submission #632868

#TimeUsernameProblemLanguageResultExecution timeMemory
632868van_hoangType Printer (IOI08_printer)C++17
20 / 100
102 ms211660 KiB
#include "bits/stdc++.h" using namespace std; #ifndef LOCAL #define debug(...) 86 #endif const int maxN = 1e6 + 5; const int maxC = 26; struct node { int end; node *child[maxC]; node() { end = 0; for (int i = 0; i < maxC; ++i) child[i] = NULL; } }; int nxt; node nodes[maxN]; node *newnode() { return &nodes[nxt++]; } vector<char> res; struct trie { node *root; trie() { root = newnode(); } void insert(node *n, string &s, int pos) { if (pos == (int)s.size()) { n->end = 1; return; } if (!n->child[s[pos] - 'a']) { n->child[s[pos] - 'a'] = newnode(); } insert(n->child[s[pos] - 'a'], s, pos + 1); } void solve(node *n) { if (n->end) { res.emplace_back('P'); return; } for (int i = 0; i < maxC; ++i) { if (!n->child[i]) continue; res.emplace_back(char(i + 'a')); solve(n->child[i]); res.emplace_back('-'); } } }; trie T; int N; int main() { ios::sync_with_stdio(0), cin.tie(0); cin >> N; for (int i = 0; i < N; ++i) { string s; cin >> s; T.insert(T.root, s, 0); } T.solve(T.root); int mx = 0, cnt = 0, pos; for (int i = 0; i < (int)res.size(); ++i) { if (res[i] == '-') { ++cnt; if (mx < cnt) { mx = cnt; pos = i; } } else cnt = 0; } int j = pos - mx; cnt = 0; while (j >= 0) { if (res[j] == 'P') { } else if (res[j] == '-') { --cnt; } else { ++cnt; if (cnt == mx) { break; } } --j; } for (int i = j; i <= pos - mx; ++i) { res.emplace_back(res[i]); } cout << (int)res.size() - (pos - j + 1) << '\n'; for (int i = 0; i < (int)res.size(); ++i) { if (i >= j && i <= pos) continue; cout << res[i] << '\n'; } }

Compilation message (stderr)

printer.cpp: In function 'int main()':
printer.cpp:110:25: warning: 'pos' may be used uninitialized in this function [-Wmaybe-uninitialized]
  110 |         if (i >= j && i <= pos) continue;
      |                       ~~^~~~~~
#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...