Submission #1326114

#TimeUsernameProblemLanguageResultExecution timeMemory
1326114viliType Printer (IOI08_printer)C++20
20 / 100
244 ms55372 KiB
#include<bits/stdc++.h> using namespace std; #define X first #define Y second #define PB push_back #define LL long long #define pii pair<int,int> #define INS insert const int N=3e5+5; const int MAX=1e9+5; unordered_map<string,set<pair<int,string>>>map2; unordered_map<string,bool>map3; vector<char>rj; string arr[N]; void dfs(string tr) { for (auto it : map2[tr]) { rj.PB(it.Y[it.Y.size()-1]); dfs(it.Y); rj.PB('-'); } if (map2[tr].size()==0) rj.PB('P'); } void solve() { int n,naj=0; cin>>n; string s; string ss; for (int i=0;i<n;i++) { cin>>s; arr[i] = s; if (s.size()>naj) { naj=s.size(); swap(s,ss); } } string s3=""; for (int i=0;i<ss.size();i++) { s3+=ss[i]; map3[s3]=1; } for (int i=0;i<n;i++) { string s2 = ""; for (int j=0;j<arr[i].size();j++) { int cc = 0; if (map3[s2+arr[i][j]] == 1) cc=1; map2[s2].INS({cc,s2+arr[i][j]}); s2+=arr[i][j]; } } dfs(""); cout << rj.size()-naj<<"\n"; for (int i=0;i<rj.size()-naj;i++) { cout<<rj[i]<<"\n"; } } int main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int t=1; while (t--) solve(); 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...