Submission #1087000

#TimeUsernameProblemLanguageResultExecution timeMemory
1087000Drifter24Type Printer (IOI08_printer)C++14
100 / 100
80 ms51664 KiB
#include <bits/stdc++.h> using namespace std; #define print(arr) for(auto& x:arr)cout<<x<<" ";cout<<"\n" #define watch(x) cout<<#x<<"="<<x<<"\n" #define all(x) x.begin(), x.end() #define sz(x) ((int) x.size()) typedef long long ll; typedef vector<ll> vl; typedef vector<int> vi; typedef pair<int, int> ii; typedef vector<ii> vii; const string ABC = "abcdefghijklmnopqrstuvwxyz"; const int maxn = 2e6+5; const int alpha = 26; const int bits = 30; int to[maxn][alpha],cnt[maxn],maxi[maxn],act; int conv(char ch){return ((ch>='a' && ch<='z')?ch-'a':ch-'A'+26);} string bin(int num, int size){return bitset<bits>(num).to_string().substr(bits-size);} void init(){ for(int i=0;i<=act;++i){ cnt[i]=0; maxi[i]=0; memset(to[i], 0, sizeof(to[i])); } act=0; } void add(const string &s){ int u=0; int n=sz(s); for(char ch:s){ int c=conv(ch); if(!to[u][c])to[u][c]=++act; u=to[u][c]; maxi[u]=max(maxi[u], n); } cnt[u]++; } vector<char> ans; void dfs(int u=0){ if(cnt[u])ans.push_back('P'); vii nodes; for(int i=0;i<alpha;++i){ if(!to[u][i])continue; nodes.push_back({maxi[to[u][i]], i}); } sort(all(nodes)); for(auto x:nodes){ ans.push_back(ABC[x.second]); dfs(to[u][x.second]); ans.push_back('-'); } } int main(){ ios::sync_with_stdio(false);cin.tie(nullptr); int n;cin>>n; init(); string s; while(n--){ cin>>s; add(s); } dfs(); while(ans.back()=='-')ans.pop_back(); cout<<sz(ans)<<"\n"; for(auto c:ans)cout<<c<<"\n"; return 0; }
#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...