Submission #219455

#TimeUsernameProblemLanguageResultExecution timeMemory
219455SortingType Printer (IOI08_printer)C++14
100 / 100
141 ms55020 KiB
#include <bits/stdc++.h> using namespace std; const int kN = 25000 + 1; const int kLen = 20 + 1; struct Trie{ struct Node{ map<char, int> next; int cnt_end; bool last_word; Node(){ cnt_end = 0; last_word = false; } }; Node nodes[kN * kLen]; int sz; Trie(){ sz = 1; } void add_word(const string &word){ int curr_node = 0; for(char c: word){ if(!nodes[curr_node].next.count(c)){ nodes[curr_node].next[c] = sz; curr_node = sz++; continue; } curr_node = nodes[curr_node].next[c]; } nodes[curr_node].cnt_end++; } }; string s[kN]; Trie trie; vector<char> operations; void dfs(int u){ for(int _ = 0; _ < trie.nodes[u].cnt_end; ++_) operations.push_back('P'); char last_word_char; int last_word_idx = -1; for(auto t: trie.nodes[u].next){ if(trie.nodes[t.second].last_word){ last_word_idx = t.second; last_word_char = t.first; continue; } operations.push_back(t.first); dfs(t.second); operations.push_back('-'); } if(last_word_idx != -1){ operations.push_back(last_word_char); dfs(last_word_idx); } } int main(){ ios::sync_with_stdio(false); cin.tie(NULL); int n; cin >> n; int max_len = 0; for(int i = 0; i < n; ++i){ cin >> s[i]; trie.add_word(s[i]); max_len = max((int)s[i].size(), max_len); } for(int i = 0; i < n; ++i){ if(s[i].size() == max_len){ int curr_node = 0; for(int j = 0; j < s[i].size(); ++j){ curr_node = trie.nodes[curr_node].next[s[i][j]]; trie.nodes[curr_node].last_word = true; } break; } } dfs(0); cout << operations.size() << "\n"; for(char operation: operations) cout << operation << "\n"; }

Compilation message (stderr)

printer.cpp: In function 'int main()':
printer.cpp:85:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   if(s[i].size() == max_len){
      ~~~~~~~~~~~~^~~~~~~~~~
printer.cpp:87:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
    for(int j = 0; j < s[i].size(); ++j){
                   ~~^~~~~~~~~~~~~
#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...