# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
554211 | 2022-04-28T02:46:53 Z | happypotato | Type Printer (IOI08_printer) | C++17 | 55 ms | 2628 KB |
#include <bits/stdc++.h> #define ll long long #define ull unsigned long long #define debug(n) cout << "DEBUG1 " << n << "\n"; #define debug2(n, m) cout << "DEBUG2 " << n << ' ' << m << "\n"; #define debug3(n, m, x) cout << "DEBUG3 " << n << ' ' << m << ' ' << x << "\n"; #define debug4(n, m, x, y) cout << "DEBUG3 " << n << ' ' << m << ' ' << x << ' ' << y << "\n"; #define ss_def stringstream ss // stringstream, do ss_def(str), then ss >> n (n is int) #define upzero(n) rrn < 0) n = 0 #define alive(n) cout << "Alive here: checkpoint " << n << endl #pragma GCC optimize("Ofast") using namespace std; void yes() { cout << "YES\n"; return; } void no() { cout << "NO\n"; return; } bool cmp1(string a, string b) { if (a.length() != b.length()) return a.length() < b.length(); for (int i = 0; i < min(a.length(), b.length()); i++) { if (a[i] != b[i]) return a[i] < b[i]; } return false; } string last; bool cmp2(string a, string b) { int cnt1 = a.length(), cnt2 = b.length(); for (int i = 0; i < a.length(); i++) { if (a[i] != last[i]) { cnt1 = i; break; } } for (int i = 0; i < b.length(); i++) { if (b[i] != last[i]) { cnt2 = i; break; } } if (cnt1 != cnt2) return cnt1 < cnt2; return a < b; } vector<char> ans; vector<string> v; void solve(int case_no) { // implementation int n; cin >> n; for (int i = 0; i < n; i++) { string str; cin >> str; v.push_back(str); } sort(v.begin(), v.end(), cmp1); last = v[v.size() - 1]; sort(v.begin(), v.end() - 1, cmp2); string str = ""; int strl = 0; for (int i = 0; i < n; i++) { int vl = v[i].length(); int ptr = 0; while (ptr < min(vl, strl)) { if (str[ptr] == v[i][ptr]) ptr++; else break; } while (str.length() > ptr + 1) { ans.push_back('-'); str.erase(str.end() - 1); strl--; } for (int j = strl; j < vl; j++) { ans.push_back(v[i][j]); str += v[i][j]; strl++; } ans.push_back('P'); } printf("%d\n", ans.size()); for (char c : ans) printf("%c\n", c); } int main() { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); srand(time(NULL)); int t = 1; // cin >> t; for (int i = 1;i <= t;i++) solve(i); } /* */
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 0 ms | 212 KB | Output is correct |
2 | Incorrect | 0 ms | 212 KB | printed invalid word |
3 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 1 ms | 212 KB | printed invalid word |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 0 ms | 212 KB | printed invalid word |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 0 ms | 212 KB | printed invalid word |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 1 ms | 212 KB | printed invalid word |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 2 ms | 340 KB | printed invalid word |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 8 ms | 596 KB | printed invalid word |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 23 ms | 1264 KB | printed invalid word |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 53 ms | 2616 KB | printed invalid word |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 55 ms | 2628 KB | printed invalid word |
2 | Halted | 0 ms | 0 KB | - |