제출 #1319184

#제출 시각아이디문제언어결과실행 시간메모리
1319184kawhietType Printer (IOI08_printer)C++20
20 / 100
1096 ms2392 KiB
#include <bits/stdc++.h>
using namespace std;

bool is_prefix(string &x, string &y) {
    int n = x.size();
    if (n > y.size()) return false;
    for (int i = 0; i < n; i++) {
        if (x[i] != y[i]) {
            return false;
        }
    }
    return true;
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int n;
    cin >> n;
    vector<string> a(n);
    for (int i = 0; i < n; i++) {
        cin >> a[i];
    }
    ranges::sort(a);
    vector<char> ans;
    do {
        vector<char> res;
        string x;
        for (int i = 0; i < n; i++) {
            while (!is_prefix(x, a[i])) {
                x.pop_back();
                res.push_back('-');
            }
            int t = x.size();
            for (int j = t; j < a[i].size(); j++) {
                x.push_back(a[i][j]);
                res.push_back(a[i][j]);
            }
            res.push_back('P');
        }
        if (ans.empty() || res.size() < ans.size()) {
            ans = res;
        }
    } while (next_permutation(a.begin(), a.end()));
    cout << ans.size() << '\n';
    for (auto c : ans) {
        cout << c << '\n';
    }
    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...