Submission #1302777

#TimeUsernameProblemLanguageResultExecution timeMemory
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...