Submission #1203429

#TimeUsernameProblemLanguageResultExecution timeMemory
1203429AMel0nType Printer (IOI08_printer)C++20
100 / 100
539 ms4684 KiB
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
#define FOR(i,N) for(ll i = 0; i < N; i++)
#define all(x) (x).begin(), (x).end()
#define F first
#define S second

string longest = "";
bool cmp(string &a, string &b) {
    for(ll i = 0; i < b.size(); i++) {
        if (a.size() == i) return 1;
        if (a[i] != b[i]) {
            if (a[i] == longest[i]) return 0;
            if (b[i] == longest[i]) return 1;
            return a[i] < b[i];
        }
    }
    return 0;
}

signed main() {
    cin.tie(0); ios::sync_with_stdio(false);
    ll N;
    cin >> N;
    vector<string> s;
    FOR(i, N) {
        string _;
        cin >> _;
        s.push_back(_);
        if (_.size() > longest.size()) longest = _;
    }
    sort(all(s), cmp);
    vector<char> res;

    string cur = "";
    FOR(i, N) {
        while(cur != s[i].substr(0, cur.size())) {
            res.push_back('-');
            cur.pop_back();
        }
        while(cur != s[i]) {
            res.push_back(s[i][cur.size()]);
            cur += s[i][cur.size()];
        }
        res.push_back('P');
    }

    cout << res.size() << endl;
    FOR(i, res.size()) cout << res[i] << 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...