Submission #529031

#TimeUsernameProblemLanguageResultExecution timeMemory
529031happypotatoType Printer (IOI08_printer)C++17
90 / 100
1078 ms5256 KiB
#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(); while (str != v[i].substr(0, min(vl, strl)) && strl != 0) { ans.push_back('-'); str.erase(strl - 1, 1); strl--; } for (int j = strl;j < vl;j++) { ans.push_back(v[i][j]); str += v[i][j]; strl++; } ans.push_back('P'); } cout << ans.size() << endl; for (char c : ans) cout << c << endl; } 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 (stderr)

printer.cpp: In function 'bool cmp1(std::string, std::string)':
printer.cpp:23:19: warning: comparison of integer expressions of different signedness: 'int' and 'const long unsigned int' [-Wsign-compare]
   23 |  for (int i = 0;i < min(a.length(), b.length());i++) {
      |                 ~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
printer.cpp: In function 'bool cmp2(std::string, std::string)':
printer.cpp:31:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   31 |  for (int i = 0;i < a.length();i++) {
      |                 ~~^~~~~~~~~~~~
printer.cpp:37:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   37 |  for (int i = 0;i < b.length();i++) {
      |                 ~~^~~~~~~~~~~~
#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...