Submission #1065011

#TimeUsernameProblemLanguageResultExecution timeMemory
1065011YassirSalamaType Printer (IOI08_printer)C++17
20 / 100
398 ms37712 KiB
#include<bits/stdc++.h> using namespace std; struct Node{ Node* c[26]; int maxdepth=0; Node(){ for(int i=0;i<26;i++) c[i]=nullptr; } }; Node* root=new Node(); void insert(string s){ Node* node=root; int n=s.length(); for(int i=0;i<n;i++){ if(node->c[s[i]-'a']==nullptr) node->c[s[i]-'a'] = new Node(); node=node->c[s[i]-'a']; node->maxdepth=max(node->maxdepth,n); } } int k; vector<char> op; void dfs(Node* node){ vector<pair<int,int>> v; for(int i=0;i<26;i++){ if(node->c[i]){ v.push_back({node->c[i]->maxdepth,i}); } } if(v.empty()){ k--; op.push_back('P'); return; } sort(v.begin(),v.end()); for(auto x:v){ op.push_back(char('a'+x.second)); dfs(node->c[x.second]); if(k!=0){ op.push_back('-'); } } } signed main(){ int n; cin>>n; k=n; vector<string> v(n); for(int i=0;i<n;i++){ cin>>v[i]; insert(v[i]); } dfs(root); cout<<op.size()<<endl; for(auto x:op){ cout<<x<<endl; } }
#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...