제출 #1254466

#제출 시각아이디문제언어결과실행 시간메모리
1254466LM1Type Printer (IOI08_printer)C++20
10 / 100
46 ms35016 KiB
#include<bits/stdc++.h> using namespace std; #define ll long long #define pii pair<int,int> #define ff first #define ss second #define pb push_back #define vi vector<int> #define fr(i,ii,iii) for(int i=ii;i<iii;i++) const int N=25003,M=26; int n; int trie[N*20][M],ct,nd; bool f[N*20],ok; char c[N*20]; vi v[N*20]; vector<char>ans; void ins(string a){ int st=0; fr(i,0,a.size()){ int &x=trie[st][a[i]-'a']; if(x==0){ x=++ct; v[st].pb(x); } st=x; c[st]=a[i]; } if(ok)nd=st; f[st]=1; } void dfs(int st){ if(nd==st)ok=1; for(auto i:v[st]){ ans.pb(c[i]); if(f[i])ans.pb('P'); dfs(i); } if(!ok)ans.pb('-'); } bool srt(string a,string b){ return(a.size()<b.size()); } int main(){ ios_base::sync_with_stdio(NULL);cin.tie(NULL); cin>>n; string aa[n]; fr(i,0,n){ cin>>aa[i]; } sort(aa,aa+n,srt); fr(i,0,n){ ok=(i==n-1); ins(aa[i]); } ok=0; dfs(0); cout<<ans.size()<<"\n"; for(auto i:ans)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...