제출 #1147359

#제출 시각아이디문제언어결과실행 시간메모리
1147359TsaganaType Printer (IOI08_printer)C++20
100 / 100
32 ms4604 KiB
#include<bits/stdc++.h>

#define IOS ios_base::sync_with_stdio(false);cin.tie();cout.tie();
#define all(x) x.begin(), x.end()
#define int long long
#define pq priority_queue
#define eb emplace_back
#define lb lower_bound
#define ub upper_bound
#define pb push_back
#define pp pop_back
#define F first
#define S second

using namespace std;

string mx;

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

void solve () {
	int n; cin >> n;
	vector<string> v;
	for (int i = 0; i < n; i++) {
		string s; cin >> s;
		v.pb(s);
		if (s.size() > mx.size()) mx = s;
	}
	sort(all(v), cmp);
	string ans;
	for (int i = 0; i < v.size(); i++) {
		int l = 0;
		if (i) while (l < v[i].size() && l < v[i-1].size() && v[i][l] == v[i-1][l]) l++;
		if (i) for (int j = v[i-1].size(); j > l; j--) ans += '-';
		for (int j = l; j < v[i].size(); j++) ans += v[i][j];
		ans += 'P';
	}
	cout << ans.size() << '\n';
	for (auto i: ans) cout << i << '\n';
}
signed main() {IOS solve(); 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...