Submission #228878

#TimeUsernameProblemLanguageResultExecution timeMemory
228878triType Printer (IOI08_printer)C++14
100 / 100
74 ms6636 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef long double ld; typedef pair<int, int> pi; typedef pair<ll, ll> pl; typedef vector<int> vi; typedef vector<ld> vd; typedef vector<ll> vl; #define pb push_back #define f first #define s second const int MAXN = 3e4; string strs[MAXN]; int lcp(string a, string b) { for (int i = 0; i < a.size() && i < b.size(); i++) { if (a[i] != b[i]) { return i; } } return min(a.size(), b.size()); } string longest; // special comparator that reorders characters in a way such that longest string will go last bool specComp(string a, string b) { for (int i = 0; i < a.size() && i < b.size(); i++) { if (a[i] == b[i]) { continue; } if (a[i] == longest[i]) { return false; } if (b[i] == longest[i]) { return true; } return a[i] < b[i]; } return a.size() < b.size(); } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); int N; cin >> N; strs[0] = ""; for (int i = 1; i <= N; i++) { cin >> strs[i]; } sort(strs, strs + N + 1); longest = ""; for (int i = 1; i <= N; i++) { if (strs[i].size() > longest.size()) { longest = strs[i]; } } sort(strs, strs + N + 1, specComp); int count = 0; string output = ""; for (int i = 1; i <= N; i++) { int cLCP = lcp(strs[i - 1], strs[i]); for (int j = 0; j < strs[i - 1].size() - cLCP; j++) { count++; output += "-\n"; } for (int j = cLCP; j < strs[i].size(); j++) { count++; output += strs[i][j]; output += "\n"; } count++; output += "P\n"; } cout << count << endl; cout << output << flush; }

Compilation message (stderr)

printer.cpp: In function 'int lcp(std::__cxx11::string, std::__cxx11::string)':
printer.cpp:23:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (int i = 0; i < a.size() && i < b.size(); i++) {
                     ~~^~~~~~~~~~
printer.cpp:23:39: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (int i = 0; i < a.size() && i < b.size(); i++) {
                                     ~~^~~~~~~~~~
printer.cpp: In function 'bool specComp(std::__cxx11::string, std::__cxx11::string)':
printer.cpp:35:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (int i = 0; i < a.size() && i < b.size(); i++) {
                     ~~^~~~~~~~~~
printer.cpp:35:39: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (int i = 0; i < a.size() && i < b.size(); i++) {
                                     ~~^~~~~~~~~~
printer.cpp: In function 'int main()':
printer.cpp:75:27: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for (int j = 0; j < strs[i - 1].size() - cLCP; j++) {
                         ~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
printer.cpp:79:30: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for (int j = cLCP; j < strs[i].size(); j++) {
                            ~~^~~~~~~~~~~~~~~~
#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...