(UPD: 2024-12-04 14:48 UTC) Judge is not working due to Cloudflare incident. (URL) We can do nothing about it, sorry. After the incident is resolved, we will grade all submissions.

제출 #1122153

#제출 시각아이디문제언어결과실행 시간메모리
1122153LuvidiType Printer (IOI08_printer)C++17
100 / 100
145 ms101640 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define pll pair<ll, ll> #define pii pair<int, int> #define fs first #define sc second #define pb push_back string ans; struct Node{ Node *ch[26]; bool b=0,m=0; void dfs(){ if(b)ans+='P'; for(int i=0;i<26;i++)if(ch[i]&&!ch[i]->m){ ans+='a'+i; ch[i]->dfs(); } for(int i=0;i<26;i++)if(ch[i]&&ch[i]->m){ ans+='a'+i; ch[i]->dfs(); } if(!m)ans+='-'; } }; void solve() { int n; cin>>n; string a[n]; for(int i=0;i<n;i++)cin>>a[i]; pii ln; for(int i=0;i<n;i++)ln=max(ln,{a[i].size(),i}); Node *root=new Node(); root->m=1; for(int i=0;i<n;i++){ auto curr=root; for(char c:a[i]){ int x=c-'a'; if(curr->ch[x]==NULL)curr->ch[x]=new Node(); curr=curr->ch[x]; if(i==ln.sc)curr->m=1; } curr->b=1; } root->dfs(); cout<<ans.size()<<'\n'; for(char c:ans)cout<<c<<'\n'; } int main() { #ifdef FPO freopen("in","r",stdin); freopen("out","w",stdout); #endif ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); solve(); }
#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...