QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#122659 | #87. Devil's Share | somethingnew# | 27 | 51ms | 11520kb | C++20 | 4.2kb | 2023-07-10 21:34:23 | 2024-07-04 00:36:11 |
Judging History
answer
// ↘ ⬇ ⬇ ⬇ ⬇ ⬇ ↙
// ➡ @roadfromroi ⬅
// ↗ ⬆ ⬆ ⬆ ⬆ ⬆ ↖
#include <iostream>
#include "vector"
#include "algorithm"
#include "numeric"
#include "climits"
#include "iomanip"
#include "bitset"
#include "cmath"
#include "map"
#include "deque"
#include "array"
#include "set"
#define all(x) x.begin(), x.end()
using namespace std;
struct dsu{
vector<int> nxt;
void init(int n) {
nxt.assign(n, {});
for (int i = 0; i < nxt.size(); ++i) {
nxt[i] = i;
}
}
void plsone() {
nxt.push_back(0);
nxt.back() = nxt.size() - 1;
}
int getv(int v) {
if (nxt[v] == v)
return v;
return nxt[v] = getv(nxt[v]);
}
void pop(int v) {
nxt[v] = v + 1;
}
};
void recstr(int v, vector<pair<pair<int, int>, int>> &a, string &s) {
if (v < 9) {
s.push_back('1' + v);
return;
}
recstr(a[v].first.first, a, s);
recstr(a[v].first.second, a, s);
}
void solve() {
int k;
cin >> k;
int sm = 0;
vector<pair<pair<int, int>, int>> a(9);
string s1, s2;
for (auto &i : a) {
cin >> i.second;
}
string sbk;
int peppa = k - 1;
for (int i = 8; i >= 0; --i) {
while (a[i].second and peppa) {
peppa--;
a[i].second--;
sbk.push_back(i + '1');
}
}
reverse(all(sbk));
int mx = -1;
int nmx = 0;
int nmxhelp = 0;
for (int i = 0; i < 9; ++i) {
if (a[i].second)
mx = i;
}
for (int i = 0; i < 9; ++i) {
//if (a[i].second and i != mx)
nmxhelp += a[i].second;
}
dsu nxt;
nxt.init(9);
//cout << a[mx].second << endl;
while (nmxhelp != a[mx].second) {
nmx = nmxhelp - a[mx].second;
int c = a[mx].second;
int kt = (c + nmx - 1) / nmx;
int mx2cnt = (kt - a[mx].second % kt) % kt, mx2 = -1;
//cout << c << ' ' << nmx << ' ' << kt << ' ' << mx2cnt << endl;
if (kt > 1) {
int rmx = mx;
for (int i = 0; i < kt - 1; ++i) {
if (i + 1 == kt - 1)
mx2 = rmx;
a.push_back({{rmx, mx}, 0});
nxt.plsone();
rmx = a.size() - 1;
}
a[rmx].second = (a[mx].second + kt - 1) / kt - mx2cnt;
nmxhelp += a[rmx].second;
nmxhelp -= a[mx].second;
a[mx].second = 0;
mx = rmx;
//cout << a[mx].second << '\n';
}
int v = nxt.getv(0);
vector<pair<pair<int, int>, int>> p1, p2;
while (a[mx].second) {
while (a[v].second == 0) {
nxt.pop(v);
v = nxt.getv(v);
}
int stepa = min(a[mx].second, a[v].second);
//cout << mx << ' ' << v << ' ' << stepa << endl;
a[mx].second -= stepa;
a[v].second -= stepa;
p1.push_back({{mx, v}, stepa});
nmxhelp -= stepa;
}
if (mx2cnt) {
a[mx2].second = mx2cnt;
nmxhelp += mx2cnt;
while (a[mx2].second) {
while (a[v].second == 0) {
nxt.pop(v);
v = nxt.getv(v);
}
int stepa = min(a[mx2].second, a[v].second);
a[mx2].second -= stepa;
a[v].second -= stepa;
p2.push_back({{mx2, v}, stepa});
nmxhelp -= stepa;
}
}
for (auto i : p2) {
a.push_back(i);
nxt.plsone();
}
for (auto i : p1) {
a.push_back(i);
mx = a.size() - 1;
nxt.plsone();
}
}
string sres;
recstr(mx, a, sres);
string sres2;
for (int i = 0; i < a[mx].second; ++i) {
sres2 += sres;
}
sres2 += sbk;
cout << sres2 << '\n';
}
signed main() {
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
int t;
cin >> t;
while (t--) {
solve();
}
}
/*
1
7
3 3 3 0 0 6 2 2 2
*/
Details
Tip: Click on the bar to expand more detailed information
Subtask #1:
score: 13
Accepted
Test #1:
score: 13
Accepted
time: 1ms
memory: 3748kb
input:
1536 4 2 1 2 2 0 0 0 0 0 2 3 2 3 3 0 0 0 0 0 3 1 2 0 3 0 0 0 0 0 4 2 2 3 2 0 0 0 0 0 1 3 3 2 2 0 0 0 0 0 3 1 2 2 0 0 0 0 0 0 3 2 1 2 3 0 0 0 0 0 6 1 3 3 0 0 0 0 0 0 4 1 0 1 2 0 0 0 0 0 4 2 1 2 3 0 0 0 0 0 4 2 3 0 2 0 0 0 0 0 5 3 2 3 3 0 0 0 0 0 3 2 2 1 1 0 0 0 0 0 3 2 3 2 0 0 0 0 0 0 8 1 3 1 3 0 0 0...
output:
3112344 41223334114 412244 312312344 4122233411 22133 41123344 2122333 1344 31312444 2121244 31223113444 212134 2212133 12223444 44143 41222333 41113344 3222313144 42223414 322231 211444 31122 11223344 11222334 13 313123124 323244 3232234 41133 3123123444 114 411222334 11333 12234 422233 3111444 444...
result:
ok Correct!
Subtask #2:
score: 14
Accepted
Test #2:
score: 14
Accepted
time: 46ms
memory: 3592kb
input:
35960 2 0 0 5 2 0 0 17 0 7 2 0 6 0 15 0 0 0 4 5 2 3 0 0 1 20 0 0 0 8 2 0 5 0 0 15 0 5 7 0 2 0 0 2 11 0 0 4 0 10 2 0 14 0 0 11 0 0 6 1 2 0 0 10 3 0 0 8 0 1 2 0 1 9 0 2 0 0 6 0 2 0 0 0 0 5 0 12 7 3 2 0 0 5 0 0 2 0 8 9 2 7 2 0 0 0 0 0 6 8 2 0 0 0 4 1 0 3 18 0 2 0 0 14 4 8 0 0 0 1 2 0 2 0 0 0 13 3 9 0 2...
output:
9447777777777777777793939393939 924444444888892292292444444449 95555559191919495555555955555559 85555555555555557777782828282828 947939449449479394494494779 82255822282228225558225558225559 7373473733737337373449 833828333833583358 955777777777777888888895559 988888888939393939396969 918918912918912...
result:
ok Correct!
Test #3:
score: 14
Accepted
time: 33ms
memory: 3604kb
input:
23426 2 34 0 0 0 0 3 0 0 8 2 20 1 0 0 0 21 0 0 0 2 18 0 0 0 5 0 0 0 18 2 8 18 0 0 0 27 0 0 0 2 0 0 2 47 0 0 0 0 4 2 0 0 0 36 9 0 5 0 0 2 7 0 0 15 0 0 29 0 0 2 2 0 27 0 0 0 20 0 0 2 0 0 0 3 29 0 0 11 0 2 0 0 0 11 0 0 25 14 0 2 0 7 0 16 0 22 0 0 0 2 0 0 0 1 0 22 20 0 0 2 0 0 0 37 0 3 0 7 0 2 20 0 0 0 ...
output:
911116669111119111119111119111119111119111119 616161616161616161616161616161616161616126 91919159191915919191191919159191915919159 62626261626262616262626161626262616262626162626261616 94444444444444444444444444444444444444444444444493939 74444444445574444444445574444444445574444444445557 7744771774...
result:
ok Correct!
Test #4:
score: 14
Accepted
time: 35ms
memory: 3468kb
input:
19600 2 0 7 0 9 0 0 3 32 0 2 0 0 0 0 23 22 4 2 0 2 0 0 6 0 0 2 33 0 10 2 0 12 0 7 0 11 21 0 0 2 41 0 0 5 3 0 2 0 0 2 19 0 0 13 6 0 0 0 13 2 12 6 0 0 9 0 0 24 0 2 0 7 2 6 0 0 0 0 36 2 3 0 18 0 0 28 0 2 0 2 0 0 2 0 0 37 3 0 9 2 8 0 0 10 29 0 0 4 0 2 18 10 0 0 2 0 0 21 0 2 0 0 29 8 0 0 9 5 0 2 28 0 0 0...
output:
884882884788478847884848848828828848828828848828828 855555555555555555555555666666666666666666666677778 977777777777777777777777777777777793939393939396969 766666666666727272727272727272727272747474747474747 711111111111111111111111111111111111111111444445557 9144555911911911914449144491444914455591...
result:
ok Correct!
Test #5:
score: 14
Accepted
time: 51ms
memory: 3596kb
input:
40215 2 5 0 0 2 3 4 5 0 2 2 0 1 4 0 2 4 0 3 7 2 2 0 0 0 0 18 12 0 0 2 0 13 11 0 16 0 0 0 0 2 7 0 6 2 1 0 0 0 5 2 4 0 0 0 0 0 8 2 3 2 5 2 0 0 2 0 2 7 3 2 3 0 0 2 3 4 4 5 0 2 0 0 3 1 0 0 0 12 2 2 2 13 3 0 1 0 0 1 1 2 0 0 10 0 4 0 0 0 18 2 0 1 7 0 0 6 0 0 1 2 3 0 6 3 3 6 0 0 0 2 0 5 0 4 4 1 7 0 0 2 0 0...
output:
911111445556666777779 955666688892939393939 76676676676676671766766766766717 5333335252525252525252525252525253333335 913333334459119119119 91177778911777789 911225577888888891119 844555666677778181818 933348888888888889 811222222222222233359 99399359939933993993559939935939 636336363363629 63334555...
result:
ok Correct!
Test #6:
score: 14
Accepted
time: 4ms
memory: 3692kb
input:
1000 2 346 0 0 0 0 0 325 0 305 2 341 0 0 0 304 0 0 0 325 2 0 315 0 0 0 0 0 335 346 2 299 0 0 0 0 296 325 0 0 2 0 0 324 286 0 298 0 0 0 2 0 0 0 0 0 0 345 323 313 2 0 0 0 0 0 305 0 320 294 2 0 0 0 308 339 0 0 301 0 2 323 0 0 317 0 0 0 0 278 2 0 292 342 0 0 324 0 0 0 2 0 0 0 285 0 342 0 324 0 2 310 0 2...
output:
917917917911917917917791791791779179179177917917917791791791779179179177917917917791791791779179179177917917917791791791779179179177917917917791791791779179179177917917917911911917917917911911917917917911911917917917911911917917917911911917917917911911917917917911911917917917911911917917917911911917...
result:
ok Correct!
Test #7:
score: 14
Accepted
time: 8ms
memory: 3692kb
input:
1000 2 232 0 0 223 0 211 0 0 244 2 0 0 0 0 233 277 222 0 252 2 0 250 230 0 0 0 241 0 242 2 248 241 248 0 0 219 0 0 0 2 223 0 0 0 253 240 226 0 0 2 0 0 0 251 0 235 0 239 263 2 267 245 0 220 260 0 0 0 0 2 261 0 0 0 0 256 250 221 0 2 0 240 229 0 0 236 243 0 0 2 0 236 0 248 0 252 242 0 0 2 0 0 239 250 0...
output:
944444444444444444444666666666666666666666666669191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919194444444444444444444449444444444444444444446666666666666666666666666669444444444444444444446666666666666666666666666691919191919191919191919191919191919191919191...
result:
ok Correct!
Test #8:
score: 14
Accepted
time: 21ms
memory: 3692kb
input:
1000 2 84 122 93 126 108 97 117 115 115 2 110 100 118 106 104 112 100 118 128 2 107 102 103 109 119 97 93 118 101 2 128 107 106 97 88 90 97 91 97 2 134 122 108 95 103 105 102 95 112 2 88 110 128 99 94 93 105 113 114 2 111 108 118 97 90 99 93 89 115 2 91 98 106 110 111 102 106 96 95 2 110 98 124 110 ...
output:
922223334444445555555555555556666666666666666666666667777777777777777777777777777777777777778888888888888888888888888888888888888891919191919191919191919191919191919191919191919191919191919191919191919191919191919192222292222333392222333392222333392222333392222333444444492222333444444492222333444444...
result:
ok Correct!
Test #9:
score: 14
Accepted
time: 17ms
memory: 4328kb
input:
100 2 1076 1058 1108 1113 1118 1160 1056 1150 1094 2 1097 1101 1124 1098 1085 1113 1122 1090 1081 2 1062 1049 1138 1063 1088 1029 1109 1149 1109 2 1005 1079 990 1015 1053 1013 1043 1059 995 2 1041 1043 1079 1092 1040 1079 1104 1057 1016 2 1012 1075 984 1082 1082 993 969 1019 987 2 939 1033 988 1061 ...
output:
922222222222222222222222222222222222222222222222222222222222222333333333333333333333333333333333333333333333333333333333333333333333333333333333333344444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444455555555555555555555555555555555555555555...
result:
ok Correct!
Test #10:
score: 14
Accepted
time: 13ms
memory: 11520kb
input:
10 2 10734 10761 10776 10789 10842 10844 10973 10952 10904 2 10639 10677 10586 10820 10717 10667 10636 10594 10659 2 10253 10248 10111 10247 10186 10246 10194 10096 10099 2 10301 10375 10306 10267 9994 10102 10124 10006 10162 2 10894 10878 10645 10624 10493 10697 10843 10738 10719 2 9953 10322 9896 ...
output:
922222222222222222222222222222222222222222222222222222222222222233333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333344444444444444444444444444444444444444444...
result:
ok Correct!
Subtask #3:
score: 0
Wrong Answer
Test #11:
score: 0
Wrong Answer
time: 16ms
memory: 3480kb
input:
26488 21 7 19 0 0 0 0 0 0 0 3 15 21 0 0 0 0 0 0 0 7 4 35 0 0 0 0 0 0 0 5 28 12 0 0 0 0 0 0 0 22 40 3 0 0 0 0 0 0 0 1 7 6 0 0 0 0 0 0 0 5 12 21 0 0 0 0 0 0 0 18 27 13 0 0 0 0 0 0 0 2 36 6 0 0 0 0 0 0 0 15 19 14 0 0 0 0 0 0 0 34 17 20 0 0 0 0 0 0 0 11 17 5 0 0 0 0 0 0 0 19 10 12 0 0 0 0 0 0 0 28 29 9 ...
output:
11111112222222222222222222 221221122122112211221221122122112122 222222221222222212222222122222221222222 2111211112111211112111211112111211112222 1111111111111111111111111111111111111111222 2121212121211 221221212212211221221122122112222 1111111111111111111111111112222222222222 2111111121111111211111...
result:
wrong output format Extra information in the output file
Subtask #4:
score: 0
Skipped
Dependency #1:
100%
Accepted
Dependency #2:
100%
Accepted
Dependency #3:
0%