제출 #581208

#제출 시각아이디문제언어결과실행 시간메모리
581208LucaIlieType Printer (IOI08_printer)C++17
100 / 100
78 ms5572 KiB
#include <bits/stdc++.h> #define MAX_N 25000 #define MAX_LEN 20 using namespace std; char lit[MAX_LEN]; int lcp[MAX_N]; string s[MAX_N]; vector <char> sol; bool comp( int i, char a, char b ) { if ( lit[i] == a ) return 0; if ( lit[i] == b ) return 1; return a < b; } bool cmp( const string &a, const string &b ) { int i; i = 0; while ( i < a.size() && i < b.size() && a[i] == b[i] ) i++; return (i == a.size() || (i < b.size() && comp( i, a[i], b[i] ))); } int main() { int n, maxLen, i, l, p; cin >> n; for ( i = 0; i < n; i++ ) cin >> s[i]; maxLen = 0; p = 0; for ( i = 0; i < n; i++ ) { if ( (int)s[i].size() > maxLen ) { maxLen = s[i].size(); p = i; } } for ( i = 0; i < s[p].size(); i++ ) lit[i] = s[p][i]; sort( s, s + n, cmp ); for ( i = 1; i < n; i++ ) { while ( lcp[i] < s[i - 1].size() && lcp[i] < s[i].size() && s[i - 1][lcp[i]] == s[i][lcp[i]] ) lcp[i]++; } l = 0; for ( i = 0; i < n; i++ ) { while ( l > lcp[i] ) { sol.push_back( '-' ); l--; } while ( l < s[i].size() ) { sol.push_back( s[i][l] ); l++; } sol.push_back( 'P' ); } cout << sol.size() << "\n"; for ( char o: sol ) cout << o << "\n"; return 0; }

컴파일 시 표준 에러 (stderr) 메시지

printer.cpp: In function 'bool cmp(const string&, const string&)':
printer.cpp:25:15: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   25 |     while ( i < a.size() && i < b.size() && a[i] == b[i] )
      |             ~~^~~~~~~~~~
printer.cpp:25:31: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   25 |     while ( i < a.size() && i < b.size() && a[i] == b[i] )
      |                             ~~^~~~~~~~~~
printer.cpp:28:15: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   28 |     return (i == a.size() || (i < b.size() && comp( i, a[i], b[i] )));
      |             ~~^~~~~~~~~~~
printer.cpp:28:33: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   28 |     return (i == a.size() || (i < b.size() && comp( i, a[i], b[i] )));
      |                               ~~^~~~~~~~~~
printer.cpp: In function 'int main()':
printer.cpp:47:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   47 |     for ( i = 0; i < s[p].size(); i++ )
      |                  ~~^~~~~~~~~~~~~
printer.cpp:53:24: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   53 |         while ( lcp[i] < s[i - 1].size() && lcp[i] < s[i].size() && s[i - 1][lcp[i]] == s[i][lcp[i]] )
      |                 ~~~~~~~^~~~~~~~~~~~~~~~~
printer.cpp:53:52: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   53 |         while ( lcp[i] < s[i - 1].size() && lcp[i] < s[i].size() && s[i - 1][lcp[i]] == s[i][lcp[i]] )
      |                                             ~~~~~~~^~~~~~~~~~~~~
printer.cpp:63:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   63 |         while ( l < s[i].size() ) {
      |                 ~~^~~~~~~~~~~~~
#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...