QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#122659#87. Devil's Sharesomethingnew#27 51ms11520kbC++204.2kb2023-07-10 21:34:232024-07-04 00:36:11

Judging History

你现在查看的是最新测评结果

  • [2024-07-04 00:36:11]
  • 评测
  • 测评结果:27
  • 用时:51ms
  • 内存:11520kb
  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2023-07-10 21:34:23]
  • 提交

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%