Submission #620054

#TimeUsernameProblemLanguageResultExecution timeMemory
6200541neType Printer (IOI08_printer)C++14
10 / 100
316 ms32356 KiB
#include<bits/stdc++.h> using namespace std; int main(){ ios_base::sync_with_stdio(false); cin.tie(0); int n;cin>>n; vector<string>arr(n); for (int i = 0;i<n;++i)cin>>arr[i]; map<string,set<int>>brr; sort(arr.begin(),arr.end(),[&](string a,string b){ return (int)a.length() < (int)b.length(); }); for (int i = 0;i<n;++i){ string s; for (auto x:arr[i]){ s+=x; brr[s].insert(i); } } vector<char>ans; vector<int>taken(n,false); for (int i = 0;i<n;++i){ if (!taken[i]){ string cur; for (int j = 0;j<(int)arr[i].length();++j){ ans.push_back(arr[i][j]); cur+=arr[i][j]; } ans.push_back('P'); taken[i] = true; while(!cur.empty()){ while(!brr[cur].empty() && taken[*brr[cur].begin()]){ brr[cur].erase(*brr[cur].begin()); } if (!brr[cur].empty()){ int x = *brr[cur].begin(); //cout<<cur<<" "<<x<<'\n'; taken[x] = true; while(cur.length() < arr[x].length()){ ans.push_back(arr[x][cur.length()]); cur+=ans.back(); } ans.push_back('P'); continue; } ans.push_back('-'); cur.pop_back(); } } } while(!ans.empty() && ans.back() =='-')ans.pop_back(); cout<<ans.size()<<'\n'; for (auto x:ans)cout<<x<<'\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...