Submission #1276097

#TimeUsernameProblemLanguageResultExecution timeMemory
1276097nanaseyuzukiType Printer (IOI08_printer)C++20
100 / 100
90 ms82020 KiB
#include <bits/stdc++.h> // Author: Kazuki_Will_Win_VOI_8703 #define fi first #define se second #define pii pair<int, int> #define all(a) a.begin(), a.end() using namespace std; const int mn = 1e6 + 5, mod = 998244353; int n, ans[mn], ed[mn], on[mn], child[mn][26], cnt = 0, Yuzuki = 0; string res; string s[mn]; vector <int> pos[mn]; void add(string a, int id){ int u = 0; for(auto c : a){ int v = c - 'a'; if(!child[u][v]) child[u][v] = ++cnt; u = child[u][v]; } ed[u] ++; } void go(string a){ int u = 0; for(auto c : a){ int v = c - 'a'; u = child[u][v]; on[u] = 1; } } void dfs(int u, int del){ for(int i = 1; i <= ed[u]; i++) res += 'P'; if(del){ int id = 0, num = 0; for(int i = 0; i < 26; i++){ int v = child[u][i]; if(!v) continue; if(on[v]){ id = v; num = i; continue; } res += char(97 + i); dfs(v, 0); res += '-'; } if(id > 0){ res += char(97 + num); dfs(id, 1); } } else{ for(int i = 0; i < 26; i++){ int v = child[u][i]; if(!v) continue; res += char(97 + i); dfs(v, 0); res += '-'; } } } void solve(){ cin >> n; int max_val = 0, id = 0; for(int i = 1; i <= n; i++){ cin >> s[i]; add(s[i], i); if(s[i].size() > s[id].size()) id = i; } go(s[id]); dfs(0, 1); cout << res.size() << '\n'; for(auto c : res) cout << c << '\n'; } signed main(){ ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); int t = 1; // cin >> t; while(t--) solve(); }
#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...