Submission #1091922

#TimeUsernameProblemLanguageResultExecution timeMemory
1091922vjudge1Type Printer (IOI08_printer)C++17
100 / 100
961 ms58548 KiB
#include <bits/stdc++.h> using namespace std; const int maxchar = 26; int nums = 0, n; vector<char> ret; string longest = ""; struct Vertex { int next[maxchar]; bool output = false; int priority = 0; Vertex() { fill(next, next + maxchar, -1); } }; vector<Vertex> trie(1); void add(string s) { int v = 0; for (char ch: s) { int c = ch - 'a'; if (trie[v].next[c] == -1) { trie[v].next[c] = trie.size(); trie.emplace_back(); } v = trie[v].next[c]; } trie[v].output = true; } void update(string s){ int v = 0; for (int i = 0;i<s.length();i++){ v = trie[v].next[(int) s[i] - 'a']; trie[v].priority = 1; } } void dfs(int v) { if (trie[v].output){ ret.push_back('P'); nums++; } int priority = -1; int idx = -1; for (int i = 0; i < maxchar; i++) { if (trie[v].next[i] != -1){ // cout<<trie[v].next[i] << trie[trie[v].next[i]].priority<<endl; if (!trie[trie[v].next[i]].priority) { ret.push_back((char)i + 'a'); dfs(trie[v].next[i]); }else { priority = trie[v].next[i]; idx = i; } } } if (priority != -1){ ret.push_back((char) idx + 'a'); dfs(priority); } if (nums < n) { ret.push_back('-'); } } int main() { cin >> n; for (int i = 0; i < n; i++) { string word; cin >> word; if (word.length() > longest.length()){ longest = word; } add(word); } update(longest); dfs(0); cout<<ret.size()<<endl; for (auto i:ret){ cout<<i<<endl; } }

Compilation message (stderr)

printer.cpp: In function 'void update(std::string)':
printer.cpp:34:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   34 |     for (int i = 0;i<s.length();i++){
      |                    ~^~~~~~~~~~~
#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...