Submission #1188986

#TimeUsernameProblemLanguageResultExecution timeMemory
1188986raspyType Printer (IOI08_printer)C++20
100 / 100
15 ms5948 KiB
#include <iostream>
#include <string>
#include <algorithm>

using namespace std;

string a[25001];

int main()
{
    ios_base::sync_with_stdio(0);cin.tie(0);
    int n;
    cin >> n;
    string nj = "";
    for (int i = 0; i < n; i++)
    {
        cin >> a[i];
        if (a[i].size() > nj.size())
            nj = a[i];
    }
    sort(a, a+n, [&nj](const string& pr, const string& dr){
        for (int i = 0; i < nj.size(); i++)
        {
            if (i == pr.size() || i == dr.size())
                break;
            if (pr[i] == nj[i] && dr[i] != nj[i])
                return false;
            if (pr[i] != nj[i] && dr[i] == nj[i])
                return true;
            if (pr[i] != nj[i] && dr[i] != nj[i])
                break;
        }
        return pr < dr;
    });
    int pr = 0;
    int sto = 0;
    string ans = "";
    for (int i = 0; i < n; i++)
    {
        int zc = 0;
        if (i)
        {
            bool nap = false;
            for (int j = 0; j < a[i-1].size(); j++)
            {
                if ((j == a[i].size() || a[i][j] != a[i-1][j]) && !nap)
                    nap = 1, zc = j;
                if (nap)
                    ans += "-\n";
            }
            if (a[i-1].size() < a[i].size() && !nap)
                zc = a[i-1].size();
        }
        for (int j = zc; j < a[i].size(); j++)
        {
            ans += a[i][j];
            ans += "\n";
        }
        ans += "P\n";
    }
    cout << ans.size()/2 << "\n";
    cout << ans;
    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...