제출 #333399

#제출 시각아이디문제언어결과실행 시간메모리
333399keko37Devil's Share (RMI19_devil)C++14
100 / 100
183 ms77624 KiB
#include<bits/stdc++.h> using namespace std; typedef long long llint; typedef pair <int, int> pi; const int MAXN = 100005; int t, k, cnt; int br[15]; deque <char> dq[MAXN]; queue < vector <int> > q; vector <int> v; int spoji (int a, int b) { if (dq[a].size() >= dq[b].size()) { while (!dq[b].empty()) { dq[a].push_back(dq[b].front()); dq[b].pop_front(); } return a; } else { while (!dq[a].empty()) { dq[b].push_front(dq[a].back()); dq[a].pop_back(); } return b; } } void ispis () { for (int i = 0; i < v.size(); i++) { int ind = v[i]; for (int j = 0; j < dq[ind].size(); j++) { cout << dq[ind][j]; } } v.clear(); for (int i = 1; i <= cnt; i++) dq[i].clear(); } int main () { ios_base::sync_with_stdio(false); cin.tie(0); cin >> t; while (t--) { cin >> k; k--; for (int i = 1; i <= 9; i++) { cin >> br[i]; } string suf = ""; for (int i = 9; i >= 1; i--) { while (k > 0 && br[i] > 0) { k--; br[i]--; suf += (char) (i + '0'); } } reverse(suf.begin(), suf.end()); int mx = 0; for (int i = 1; i <= 9; i++) { if (br[i] > 0) mx = i; } cnt = 0; for (int i = 1; i <= 9; i++) { if (br[i] == 0) continue; vector <int> r; for (int j = 0; j < br[i]; j++) { cnt++; r.push_back(cnt); dq[cnt].push_back((char) (i + '0')); } if (i != mx) q.push(r); else v = r; } while (!q.empty()) { vector <int> r = q.front(); q.pop(); while (r.size() >= v.size()) { for (int i = 0; i < v.size(); i++) { int b = r.back(); r.pop_back(); v[i] = spoji(v[i], b); } } if (r.empty()) continue; vector <int> res; while (!r.empty()) { int a = v.back(), b = r.back(); v.pop_back(); r.pop_back(); res.push_back(spoji(a, b)); } q.push(res); } ispis(); cout << suf << '\n'; } return 0; }

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

devil.cpp: In function 'void ispis()':
devil.cpp:33:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   33 |     for (int i = 0; i < v.size(); i++) {
      |                     ~~^~~~~~~~~~
devil.cpp:35:27: warning: comparison of integer expressions of different signedness: 'int' and 'std::deque<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   35 |         for (int j = 0; j < dq[ind].size(); j++) {
      |                         ~~^~~~~~~~~~~~~~~~
devil.cpp: In function 'int main()':
devil.cpp:84:35: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   84 |                 for (int i = 0; i < v.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...