제출 #1302777

#제출 시각아이디문제언어결과실행 시간메모리
1302777ElayV13Type Printer (IOI08_printer)C++20
10 / 100
2 ms348 KiB
#include <bits/stdc++.h> using namespace std; #define int long long const int INF = 1e18; int n; string a[19]; signed main(){ cin >> n; for(int i = 1;i <= n;i++) { cin >> a[i]; } pair < int , vector < char > > ans = {INF , {}}; for(int st = 1;st <= n;st++) { bool used[19]; for(int i = 1;i <= 18;i++) used[i] = 0; vector < char > res; for(char c : a[st]) res.push_back(c); res.push_back('P'); int last = st; used[st] = 1; while(true){ pair < int , int > next = {-1 , -1}; for(int j = 1;j <= n;j++){ if(used[j]) continue; int same = 0; string F = a[last]; string S = a[j]; for(int i = 0;i < min(F.size() , S.size());i++){ if(F[i] == S[i]) ++same; else break; } next = max(next , {same , j}); } int RMV = (a[last].size() - next.first); last = next.second; if(last == -1) break; used[last] = 1; while(RMV--) res.push_back('-'); for(int i = next.first;i < a[last].size();i++) res.push_back(a[last][i]); res.push_back('P'); } ans = min(ans , {res.size() , res}); } vector < char > res = ans.second; cout << res.size() << endl; for(char c : res) cout << c << endl; }
#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...