제출 #1259515

#제출 시각아이디문제언어결과실행 시간메모리
1259515mdobricType Printer (IOI08_printer)C++20
100 / 100
33 ms6848 KiB
#include <bits/stdc++.h> using namespace std; const int maxn = 25005; int n; string s[maxn]; int maxl, in, prekl[maxn]; vector <string> red; vector <char> ispis; int main (void){ ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin >> n; for (int i = 0; i < n; i++){ cin >> s[i]; } sort(s, s + n); for (int i = 0; i < n; i++){ if (s[i].size() > maxl){ maxl = s[i].size(); in = i; } if (i > 0){ int br = 0; for (int j = 0; j < min(s[i].size(), s[i - 1].size()); j++){ if (s[i][j] != s[i - 1][j]) break; br++; } prekl[i] = br; } //cout << s[i] << " " << prekl[i] << endl; } int l = in, r = in; red.push_back(s[in]); for (int i = max(prekl[in + 1], prekl[in]); i >= 1; i--){ while (l > 0 and prekl[l] >= i){ l--; red.push_back(s[l]); } while (r < n - 1 and prekl[r + 1] >= i){ r++; red.push_back(s[r]); } } for (int i = 0; i < l; i++) red.push_back(s[i]); for (int i = r + 1; i < n; i++) red.push_back(s[i]); reverse(red.begin(), red.end()); string prosli = ""; for (int i = 0; i < n; i++){ int pref = 0; for (int j = 0; j < min(prosli.size(), red[i].size()); j++){ if (prosli[j] != red[i][j]) break; pref++; } for (int j = 0; j < int(prosli.size()) - pref; j++) ispis.push_back('-'); for (int j = pref; j < red[i].size(); j++) ispis.push_back(red[i][j]); ispis.push_back('P'); prosli = red[i]; } cout << ispis.size() << "\n"; for (int i = 0; i < ispis.size(); i++) cout << ispis[i] << "\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...