Submission #541537

#TimeUsernameProblemLanguageResultExecution timeMemory
541537mateigg4Type Printer (IOI08_printer)C++14
100 / 100
153 ms106316 KiB
#include <iostream> using namespace std; int aux, p = 0; char sol[1000000]; string s, lw; struct trie { int printez, sterg, printezlit; trie* fii[27]; trie() { printez = sterg = printezlit = 0; for (aux = 0; aux <= 26; aux++) fii[aux] = 0; }; }; trie* t = new trie; void add (trie* x, int poz, int pmax) { if (poz <= pmax) { x->printezlit = 1, x->sterg = 1; int ch = s[poz] - 'a'; if (x->fii[ch] == 0) x->fii[ch] = new trie; add (x->fii[ch], poz + 1, pmax); } else x->printez++, x->sterg = 1, x->printezlit = 1; } void dfs (trie* x, int poz, int pmax, int ok, char lit) { int i, xp = x->printez; sol[++p] = lit; while (xp--) sol[++p] = 'P'; for (i = 0; i <= 26; i++) if (x->fii[i] != 0 && (i + 'a' != lw[poz] || poz > pmax || ok == 0)) dfs (x->fii[i], poz, pmax, 0, i + 'a'); if (ok == 1 && poz <= pmax) dfs (x->fii[lw[poz] - 'a'], poz + 1, pmax, 1, lw[poz]); xp = x->sterg; sol[++p] = '-'; } int main() { int n, i, lm = 0; cin >> n; for (i = 1; i <= n; i++) { cin >> s; add (t, 0, s.size() - 1); if (lm < s.size()) lm = s.size(), lw = s; } dfs (t, 0, lw.size() - 1, 1, ' '); while (sol[p] == '-') p--; cout << p - 1 << '\n'; for (i = 2; i <= p; i++) cout << sol[i] << '\n'; return 0; }

Compilation message (stderr)

printer.cpp: In function 'int main()':
printer.cpp:56:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   56 |         if (lm < s.size())
      |             ~~~^~~~~~~~~~
#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...