Submission #934444

#TimeUsernameProblemLanguageResultExecution timeMemory
934444bashNewbieType Printer (IOI08_printer)C++17
100 / 100
71 ms48456 KiB
#include <iostream> #include <vector> #include <algorithm> #include <string> using namespace std; #define fast_io ios::sync_with_stdio(0), cin.tie(0) const int N = 5e5+7, K = 26; int adj[N][K+1], len, ret; string ms; inline void pr(char c) { cout << c << "\n"; } inline void pr(int c) { cout << char(c+'a') << "\n"; } void add(string& s) { int x = 0; for(char ch: s) { int c = ch-'a', y = adj[x][c]; if(!y) adj[x][c] = ++len, ret++; x = adj[x][c]; } adj[x][K] = 1; } void dfs(int x, int in, int d) { int c = in && d < (int)ms.size()? ms[d]-'a': -1; for(int j = 0; j < K+1; j++) { int y = adj[x][j]; if(!y) continue; if(j == K) pr('P'); else { if(!in || in && j != c) pr(j), dfs(y, 0, d+1); } } if(~c) pr(c), dfs(adj[x][c], 1, d+1); if(!in) pr('-'); } int main() { fast_io; ret = 0; int n, l = 0; string s; cin >> n; for(int i = 0; i < n; i++) { cin >> s, add(s); if((int)s.size() > l) l = (int)s.size(), ms = s; } ret <<= 1, ret += n-l; cout << ret << "\n"; dfs(0, 1, 0); }

Compilation message (stderr)

printer.cpp: In function 'void dfs(int, int, int)':
printer.cpp:38:17: warning: suggest parentheses around '&&' within '||' [-Wparentheses]
   38 |    if(!in || in && j != c) pr(j), dfs(y, 0, d+1);
      |              ~~~^~~~~~~~~
#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...