Hướng dẫn giải của Bedao Regular Contest 12 - 3M0J1
Chỉ dùng lời giải này khi không có ý tưởng, và đừng copy-paste code từ lời giải này. Hãy tôn trọng người ra đề và người viết lời giải.
Nộp một lời giải chính thức trước khi tự giải là một hành động có thể bị ban.
Nộp một lời giải chính thức trước khi tự giải là một hành động có thể bị ban.
Tác giả:
Từ đề bài, ta có thể thấy: một số emoji sẽ có kí tự đặc biệt (chỉ emoji đó có, không bị trùng với emoji nào khác). Vì vậy, ta sẽ xét các emoji đó trước, và thực hiện đến khi không còn kí tự đặc biệt nào.
Độ phức tạp: ~O(n)~ với ~n~ là độ dài của xâu kí tự ban đầu.
Code mẫu
#include <bits/stdc++.h> #define VanLoi "" #define gb(i, j) ((i >> j) & 1) using namespace std; const int N = 100005, MOD = 1000000007; int n, a[200]; string s; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); #ifndef ONLINE_JUDGE freopen(VanLoi".inp","r",stdin); freopen(VanLoi".out","w",stdout); #endif // ONLINE_JUDGE cin >> s; for (int i = 0; i < s.length(); i++) a[s[i]]++; while (a['[']) { cout << "[:|||:]" << '\n'; a['[']--; a[':'] -= 2; a['|'] -= 3; a[']']--; } while (a['~']) { cout << ":~(" << '\n'; a[':']--; a['~']--; a['(']--; } while (a['X']) { cout << ":-X" << '\n'; a[':']--; a['-']--; a['X']--; } while (a['%']) { cout << "%0" << '\n'; a['%']--; a['0']--; } while (a['E']) { cout << ":-E" << '\n'; a[':']--; a['-']--; a['E']--; } while (a['8']) { cout << "8-0" << '\n'; a['8']--; a['-']--; a['0']--; } while (a['|']) { cout << ":-|" << '\n'; a[':']--; a['-']--; a['|']--; } while (a['0']) { cout << ":-0" << '\n'; a[':']--; a['-']--; a['0']--; } while (a['C']) { cout << ":C" << '\n'; a[':']--; a['C']--; } while (a['D']) { cout << ":D" << '\n'; a[':']--; a['D']--; } while (a['P']) { cout << ":-P" << '\n'; a[':']--; a['-']--; a['P']--; } while (a[92]) { cout << ":-\\" << '\n'; a[':']--; a['-']--; a[92]--; } while (a[';'] && a[')'] && a['-']) { cout << ";-)" << '\n'; a[';']--; a['-']--; a[')']--; } while (a[';'] && a['('] && a['-']) { cout << ";-(" << '\n'; a[';']--; a['-']--; a['(']--; } while (a[')']) { cout << ":)" << '\n'; a[':']--; a[')']--; } while (a['(']) { cout << ":(" << '\n'; a[':']--; a['(']--; } }
Bình luận