Submission #1319171

#TimeUsernameProblemLanguageResultExecution timeMemory
1319171kawhietType Printer (IOI08_printer)C++20
10 / 100
16 ms2480 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, [&](auto x, auto y) {
        if (x[0] == y[0]) {
            return x < y;
        } else {
            return x.size() < y.size();
        }
    });
    vector<char> ans;
    string x;
    for (int i = 0; i < n; i++) {
        while (!is_prefix(x, a[i])) {
            ans.push_back('-');
            x.pop_back();
        }
        int t = x.size();
        for (int j = t; j < a[i].size(); j++) {
            x.push_back(a[i][j]);
            ans.push_back(a[i][j]);
        }
        ans.push_back('P');
    }
    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...