제출 #1064018

#제출 시각아이디문제언어결과실행 시간메모리
10640188e7Tricolor Lights (JOI24_tricolor)C++17
30 / 100
63 ms7112 KiB
#include "Anna.h" #include <bits/stdc++.h> using namespace std; namespace { #ifdef zisk void debug(){cout << endl;} template<class T, class ... U> void debug(T a, U ... b){cout << a << " ", debug(b...);} template<class T> void pary(T l, T r) { while (l != r) cout << *l << " ", l++; cout << endl; } #else #define debug(...) 0 #define pary(...) 0 #endif #define ll long long #define maxn 200005 #define pii pair<int, int> #define ff first #define ss second #define io ios_base::sync_with_stdio(0);cin.tie(0); int to_int(char c) { if (c == 'R') return 0; else if (c == 'G') return 1; else return 2; } char to_char(int i) { const string S = "RGB"; return S[i]; } int base_one(int prv, int res) { if ((prv+1)%3 != res) return (prv+1)%3; else return (prv+2)%3; } } void add_bit(std::vector<int> &ret, std::vector<int> &v, int bit) { //add semantic bit, could be 0/1/2 int ind = ret.size(); if (ind >= v.size()) return; for (int i = 0;i < bit*2;i++) { ret.push_back(base_one(ret.back(), v[ind])); ind++; if (ind >= v.size()) return; } if (ret.back() != v[ind]) { ret.push_back(ret.back()); //base 0 ind++; } else { if (ind+1 >= v.size()) { ret.push_back(base_one(ret.back(), v[ind])); return; } ret.push_back(base_one(ret.back(), v[ind+1])); ret.push_back(ret.back()); ind+=2; } } pair<string, int> anna(int N, string S) { vector<int> v(N, 0), ret; for (int i = 0;i < N;i++) v[i] = to_int(S[i]); ret.push_back((v[0]+1)%3); int maxlen = 0; while (ret.size() < N) { int pos = ret.size(); //try to encode pos vector<int> bi; //binary representation, use len later while (pos) { bi.push_back(pos & 1); pos >>= 1; } int len = 0; for (int b:bi) { len += (b+1)*2; add_bit(ret, v, b); } len += 6; maxlen = max(maxlen, len); add_bit(ret, v, 2); //add separator } int L = min(N, maxlen*2+6); string ans; for (int i = 0;i < N;i++) { ans.push_back(to_char(ret[i])); } debug(ans, S); return make_pair(ans, L); }
#include "Bruno.h" #include <bits/stdc++.h> using namespace std; namespace { #ifdef zisk void debug(){cout << endl;} template<class T, class ... U> void debug(T a, U ... b){cout << a << " ", debug(b...);} template<class T> void pary(T l, T r) { while (l != r) cout << *l << " ", l++; cout << endl; } #else #define debug(...) 0 #define pary(...) 0 #endif #define ll long long #define maxn 200005 #define pii pair<int, int> #define ff first #define ss second #define io ios_base::sync_with_stdio(0);cin.tie(0); int N, L; int to_int(char c) { if (c == 'R') return 0; else if (c == 'G') return 1; else return 2; } char to_char(int i) { const string S = "RGB"; return S[i]; } int base_one(int prv, int res) { if ((prv+1)%3 != res) return (prv+1)%3; else return (prv+2)%3; } } void init(int N, int l) { ::N = N; ::L = l; debug("L", l); } int bruno(string s) { if (N == L) return 1; int len = s.size(); vector<int> v; for (int i = 1;i < len;i++) { if (s[i] == s[i-1]) v.push_back(0); else v.push_back(1); } debug(s); pary(v.begin(), v.end()); vector<int> bits, pref; int count = 0; for (int i = 0;i < v.size();i++) { if (v[i] == 0) { bits.push_back(count / 2); pref.push_back(i - count); count = 0; } else { count += 1; } } if (count >= 4) { bits.push_back(2); pref.push_back(v.size() - count); } pary(bits.begin(), bits.end()); pary(pref.begin(), pref.end()); int po = 0, num = 0; for (int i = 0;i < bits.size();i++) { if (bits[i] == 2) { for (int j = i+1;j < bits.size();j++) { if (bits[j] == 2) break; num += bits[j]<<po; po += 1; } debug(num); num -= pref[i+1]; break; } } debug("Answer", num); return num; }

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

Anna.cpp: In function 'void add_bit(std::vector<int>&, std::vector<int>&, int)':
Anna.cpp:46:13: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   46 |     if (ind >= v.size()) return;
      |         ~~~~^~~~~~~~~~~
Anna.cpp:50:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   50 |         if (ind >= v.size()) return;
      |             ~~~~^~~~~~~~~~~
Anna.cpp:56:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   56 |         if (ind+1 >= v.size()) {
      |             ~~~~~~^~~~~~~~~~~
Anna.cpp: In function 'std::pair<std::__cxx11::basic_string<char>, int> anna(int, std::string)':
Anna.cpp:71:23: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   71 |     while (ret.size() < N) {
      |            ~~~~~~~~~~~^~~
Anna.cpp:13:20: warning: statement has no effect [-Wunused-value]
   13 | #define debug(...) 0
      |                    ^
Anna.cpp:93:5: note: in expansion of macro 'debug'
   93 |     debug(ans, S);
      |     ^~~~~

Bruno.cpp: In function 'void init(int, int)':
Bruno.cpp:14:20: warning: statement has no effect [-Wunused-value]
   14 | #define debug(...) 0
      |                    ^
Bruno.cpp:46:5: note: in expansion of macro 'debug'
   46 |     debug("L", l);
      |     ^~~~~
Bruno.cpp: In function 'int bruno(std::string)':
Bruno.cpp:14:20: warning: statement has no effect [-Wunused-value]
   14 | #define debug(...) 0
      |                    ^
Bruno.cpp:57:5: note: in expansion of macro 'debug'
   57 |     debug(s);
      |     ^~~~~
Bruno.cpp:15:19: warning: statement has no effect [-Wunused-value]
   15 | #define pary(...) 0
      |                   ^
Bruno.cpp:58:5: note: in expansion of macro 'pary'
   58 |     pary(v.begin(), v.end());
      |     ^~~~
Bruno.cpp:61:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   61 |     for (int i = 0;i < v.size();i++) {
      |                    ~~^~~~~~~~~~
Bruno.cpp:15:19: warning: statement has no effect [-Wunused-value]
   15 | #define pary(...) 0
      |                   ^
Bruno.cpp:74:5: note: in expansion of macro 'pary'
   74 |     pary(bits.begin(), bits.end());
      |     ^~~~
Bruno.cpp:15:19: warning: statement has no effect [-Wunused-value]
   15 | #define pary(...) 0
      |                   ^
Bruno.cpp:75:5: note: in expansion of macro 'pary'
   75 |     pary(pref.begin(), pref.end());
      |     ^~~~
Bruno.cpp:77:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   77 |     for (int i = 0;i < bits.size();i++) {
      |                    ~~^~~~~~~~~~~~~
Bruno.cpp:79:32: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   79 |             for (int j = i+1;j < bits.size();j++) {
      |                              ~~^~~~~~~~~~~~~
Bruno.cpp:14:20: warning: statement has no effect [-Wunused-value]
   14 | #define debug(...) 0
      |                    ^
Bruno.cpp:84:13: note: in expansion of macro 'debug'
   84 |             debug(num);
      |             ^~~~~
Bruno.cpp:14:20: warning: statement has no effect [-Wunused-value]
   14 | #define debug(...) 0
      |                    ^
Bruno.cpp:89:5: note: in expansion of macro 'debug'
   89 |     debug("Answer", num);
      |     ^~~~~
Bruno.cpp: At global scope:
Bruno.cpp:37:5: warning: 'int {anonymous}::base_one(int, int)' defined but not used [-Wunused-function]
   37 | int base_one(int prv, int res) {
      |     ^~~~~~~~
Bruno.cpp:32:6: warning: 'char {anonymous}::to_char(int)' defined but not used [-Wunused-function]
   32 | char to_char(int i) {
      |      ^~~~~~~
Bruno.cpp:26:5: warning: 'int {anonymous}::to_int(char)' defined but not used [-Wunused-function]
   26 | int to_int(char c) {
      |     ^~~~~~
#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...