제출 #332407

#제출 시각아이디문제언어결과실행 시간메모리
332407IgorIDevil's Share (RMI19_devil)C++17
100 / 100
87 ms7148 KiB
#include <bits/stdc++.h> using namespace std; string chk(string s, int k) { string mx = ""; for (int i = 0; i + k <= s.size(); i++) mx = max(mx, s.substr(i, k)); return mx; } string solve(int c1, int c2) { if (c1 == 0) { return string(c2, '2'); } if (c2 % c1 == 0) { string res = ""; for (int i = 0; i < c1; i++) { for (int j = 0; j < c2 / c1; j++) res += "2"; res += "1"; } return res; } vector<int> h(c1, c2 / c1); string g = solve(c1 - c2 % c1, c2 % c1); for (int i = 0; i < h.size(); i++) { if (g[i] == '2') h[i]++; } string res = ""; for (int i = 0; i < h.size(); i++) { for (int j = 0; j < h[i]; j++) res += "2"; res += "1"; } return res; } string construct(int c1, int c2, int k) { string ans = ""; if (c1 == 0) { return string(c2, '2'); } string s(k - 1, '0'); for (int i = k - 2; i >= 0; i--) { if (c2) c2--, s[i] = '2'; else c1--, s[i] = '1'; } ans = solve(c1, c2) + s; return ans; } void solve() { int n = 10; int k = 0; cin >> k; vector<int> d(n); for (int i = 1; i < n; i++) cin >> d[i]; string s = ""; int dg = n - 1; while (s.size() < k - 1) { while (d[dg] == 0) dg--; d[dg]--; s += (char)('0' + dg); } reverse(s.begin(), s.end()); while (d[dg] == 0) dg--; pair<string, int> ans(string(1, char('0' + dg)), d[dg]); vector<pair<string, int> > q; for (int i = 0; i < dg; i++) { if (d[i] > 0) q.push_back({string(1, '0' + i), d[i]}); } for (int i = 0; i < q.size(); i++) { auto it = q[i]; //cout << it.first << " " << it.second << "\n"; while (it.second >= ans.second) { ans.first += it.first; it.second -= ans.second; } //cout << ans.first << "\n"; if (it.second > 0) { q.push_back({ans.first + it.first, it.second}); ans.second -= it.second; } } for (int j = 0; j < ans.second; j++) cout << ans.first; cout << s << "\n"; } int main() { ios_base::sync_with_stdio(false); cin.tie(0); int t = 1; cin >> t; while (t--) { solve(); } }

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

devil.cpp: In function 'std::string chk(std::string, int)':
devil.cpp:8:27: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    8 |     for (int i = 0; i + k <= s.size(); i++)
      |                     ~~~~~~^~~~~~~~~~~
devil.cpp: In function 'std::string solve(int, int)':
devil.cpp:32:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   32 |     for (int i = 0; i < h.size(); i++)
      |                     ~~^~~~~~~~~~
devil.cpp:37:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   37 |     for (int i = 0; i < h.size(); i++)
      |                     ~~^~~~~~~~~~
devil.cpp: In function 'void solve()':
devil.cpp:75:21: warning: comparison of integer expressions of different signedness: 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   75 |     while (s.size() < k - 1)
      |            ~~~~~~~~~^~~~~~~
devil.cpp:89:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<std::__cxx11::basic_string<char>, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   89 |     for (int i = 0; i < q.size(); 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...