Submission #1003398

#TimeUsernameProblemLanguageResultExecution timeMemory
1003398vjudge1Type Printer (IOI08_printer)C++17
10 / 100
43 ms35540 KiB
#include <bits/stdc++.h> using namespace std; int n; const int sz=5e5 + 1; int trie[sz][26]; int bitis[sz]; vector<int> gt[sz]; vector<char> cvb; int last=0; void qur(string s){ int curr=0; for(auto &i : s){ if(trie[curr][i-'a'])curr = trie[curr][i - 'a']; else{ gt[curr].push_back(i - 'a'); curr = trie[curr][i - 'a'] = ++last; } } bitis[curr]++; } void dfs(int node){ if(bitis[node]){ for(int i=0;i<bitis[node];++i)cvb.push_back('P'); } for(auto &i : gt[node]){ cvb.push_back(i + 'a'); dfs(trie[node][i]); } cvb.push_back('-'); } int main(){ cin >> n; vector<string> sira(n); for(auto &i : sira){ cin >> i; } sort(sira.begin(),sira.end()); reverse(sira.begin(),sira.end()); for(auto &i : sira)qur(i); dfs(0); while(cvb.back() == '-')cvb.pop_back(); cout << cvb.size() << '\n'; for(auto &i : cvb)cout << i << '\n'; }
#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...