Submission #655017

#TimeUsernameProblemLanguageResultExecution timeMemory
655017happypotatoType Printer (IOI08_printer)C++17
100 / 100
74 ms4612 KiB
#include <bits/stdc++.h> using namespace std; 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 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) { 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'); } printf("%d\n", ans.size()); for (char c : ans) printf("%c\n", c); } int main() { int t = 1; // cin >> t; for (int i = 1;i <= t;i++) solve(); } /* */

Compilation message (stderr)

printer.cpp: In function 'bool cmp1(std::string&, std::string&)':
printer.cpp:5:20: warning: comparison of integer expressions of different signedness: 'int' and 'const long unsigned int' [-Wsign-compare]
    5 |  for (int i = 0; i < min(a.length(), b.length()); i++) {
      |                  ~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
printer.cpp: In function 'bool cmp2(std::string&, std::string&)':
printer.cpp:13:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   13 |  for (int i = 0; i < a.length(); i++) {
      |                  ~~^~~~~~~~~~~~
printer.cpp:19:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   19 |  for (int i = 0; i < b.length(); i++) {
      |                  ~~^~~~~~~~~~~~
printer.cpp: In function 'void solve()':
printer.cpp:50:23: warning: comparison of integer expressions of different signedness: 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   50 |   while (str.length() > ptr) {
      |          ~~~~~~~~~~~~~^~~~~
printer.cpp:62:11: warning: format '%d' expects argument of type 'int', but argument 2 has type 'std::vector<char>::size_type' {aka 'long unsigned int'} [-Wformat=]
   62 |  printf("%d\n", ans.size());
      |          ~^     ~~~~~~~~~~
      |           |             |
      |           int           std::vector<char>::size_type {aka long unsigned int}
      |          %ld
#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...