이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
#define dbg() cerr <<
#define name(x) (#x) << ": " << (x) << ' ' <<
using namespace std;
void SolveTest() {
int k; cin >> k;
vector<int> freq(10);
for (int i = 1; i < 10; ++i) {
cin >> freq[i];
}
string suff;
int dig = 9;
for (int i = 0; i < k - 1; ++i) {
while (freq[dig] == 0) --dig;
suff += dig + '0';
--freq[dig];
}
reverse(suff.begin(), suff.end());
while (freq[dig] == 0) --dig;
pair<string, int> mx = {string(1, dig + '0'), freq[dig]};
vector<pair<string, int>> q;
for (int i = 0; i < dig; ++i) {
if (freq[i] > 0)
q.emplace_back(string(1, i + '0'), freq[i]);
}
for (int it = 0; it < (int)q.size(); ++it) {
auto mn = q[it];
while (mn.second >= mx.second) {
mx.first += mn.first;
mn.second -= mx.second;
}
if (mn.second > 0) {
q.emplace_back(mx.first + mn.first, mn.second);
mx.second -= mn.second;
}
}
for (int i = 0; i < mx.second; ++i)
cout << mx.first;
cout << suff << '\n';
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int t; cin >> t;
while (t--) {
SolveTest();
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |