Submission #1218968

#TimeUsernameProblemLanguageResultExecution timeMemory
1218968edga1Type Printer (IOI08_printer)C++20
10 / 100
16 ms2236 KiB
#include <bits/stdc++.h>

using namespace std;

#define FIO ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define ll long long
#define pb push_back
#define fi first
#define se second

const int N = 1e5 + 5;
const ll MOD = 1e9 + 7;
const ll INF = 1e9;
string lo;

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

int main(){
    FIO;
    int n; cin>>n;
    vector<string> s(n);
    int l=0;
    for(int i=0; i<n; i++){
        cin>>s[i];
        if(s[i].size()>l){
            l=s[i].size();
            lo=s[i];
        }
    }
    sort(s.begin(),s.end(),cmp);
    vector<char> d;
    string cur="";
    for(int i=0; i<n; i++){
        while(cur!=s[i].substr(0,cur.size())){
            d.pb('-');
            cur.pop_back();
        }
        while(cur!=s[i]){
            d.pb(s[i][cur.size()]);
            cur.pb(s[i][cur.size()]);
        }
        d.pb('P');
    }
    cout<<d.size()<<'\n';
    for(auto a : d){
        cout<<a<<'\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...