QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#355432 | #8107. Permutation | ucup-team004# | AC ✓ | 54ms | 111376kb | C++20 | 2.5kb | 2024-03-16 17:41:19 | 2024-03-16 17:41:20 |
Judging History
answer
#include <bits/stdc++.h>
using i64 = long long;
using i128 = __int128;
constexpr int B = 70;
constexpr int N = 3E5;
constexpr i64 inf = 1E18 + 1;
int fen[N];
void add(int x, int y) {
for (int i = x + 1; i <= N; i += i & -i) {
fen[i - 1] += y;
}
}
int get(int k) {
int x = 0;
for (int i = (1 << 18); i; i /= 2) {
if (x + i <= N && k >= fen[x + i - 1]) {
x += i;
k -= fen[x - 1];
}
}
return x;
}
int main() {
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);
int n;
i64 k;
std::cin >> n >> k;
i64 target = 1LL * n * (n - 1) / 2;
if (target % 2 == 1) {
std::cout << "NO\n";
return 0;
}
target /= 2;
k--;
std::vector<int> a(n);
std::vector<std::vector<i64>> dp(n + 1);
int U = -1;
for (int i = n - 1; i >= 0; i--) {
if (i >= B && target - i >= B / 2 && target - i + B / 2 <= 1LL * (i + 1) * i / 2) {
a[i] = i;
} else {
if (U == -1) {
// std::cerr << i << " " << B << "\n";
U = n > 5000 ? B : target;
for (int j = 0; j <= i; j++) {
dp[j].resize(U + 1);
}
dp[0][0] = 1;
for (int j = 0; j < i; j++) {
i128 sum = 0;
for (int l = 0; l <= U; l++) {
sum += dp[j][l];
if (l > j) {
sum -= dp[j][l - j - 1];
}
dp[j + 1][l] = std::min(i128(inf), sum);
}
}
}
for (int x = std::min(target, 1LL * i); x >= 0; x--) {
assert(target - x <= U);
if (k < dp[i][target - x]) {
a[i] = x;
break;
}
k -= dp[i][target - x];
if (x == 0) {
std::cout << "NO\n";
return 0;
}
}
}
target -= a[i];
}
for (int i = 0; i < n; i++) {
a[i] = i - a[i];
}
std::reverse(a.begin(), a.end());
std::vector<int> p(n);
std::cout << "YES\n";
for (int i = 0; i < n; i++) {
add(i, 1);
}
for (int i = 0; i < n; i++) {
p[i] = get(a[i]);
std::cout << p[i] + 1 << " \n"[i == n - 1];
add(p[i], -1);
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 1ms
memory: 3804kb
input:
4 3
output:
YES 2 4 1 3
result:
ok 2 lines
Test #2:
score: 0
Accepted
time: 0ms
memory: 3836kb
input:
4 57
output:
NO
result:
ok single line: 'NO'
Test #3:
score: 0
Accepted
time: 1ms
memory: 3672kb
input:
1 1
output:
YES 1
result:
ok 2 lines
Test #4:
score: 0
Accepted
time: 0ms
memory: 3644kb
input:
1 2
output:
NO
result:
ok single line: 'NO'
Test #5:
score: 0
Accepted
time: 1ms
memory: 3552kb
input:
1 42
output:
NO
result:
ok single line: 'NO'
Test #6:
score: 0
Accepted
time: 1ms
memory: 3648kb
input:
4 1
output:
YES 1 4 3 2
result:
ok 2 lines
Test #7:
score: 0
Accepted
time: 0ms
memory: 3644kb
input:
4 6
output:
YES 4 1 2 3
result:
ok 2 lines
Test #8:
score: 0
Accepted
time: 0ms
memory: 3608kb
input:
4 7
output:
NO
result:
ok single line: 'NO'
Test #9:
score: 0
Accepted
time: 1ms
memory: 3632kb
input:
5 13
output:
YES 3 4 2 1 5
result:
ok 2 lines
Test #10:
score: 0
Accepted
time: 0ms
memory: 3652kb
input:
5 21
output:
YES 5 1 3 2 4
result:
ok 2 lines
Test #11:
score: 0
Accepted
time: 0ms
memory: 3652kb
input:
5 22
output:
YES 5 2 1 3 4
result:
ok 2 lines
Test #12:
score: 0
Accepted
time: 0ms
memory: 3840kb
input:
5 23
output:
NO
result:
ok single line: 'NO'
Test #13:
score: 0
Accepted
time: 0ms
memory: 3584kb
input:
8 3836
output:
YES 8 7 2 1 3 4 5 6
result:
ok 2 lines
Test #14:
score: 0
Accepted
time: 0ms
memory: 3596kb
input:
8 3837
output:
NO
result:
ok single line: 'NO'
Test #15:
score: 0
Accepted
time: 0ms
memory: 3644kb
input:
9 29228
output:
YES 9 8 4 1 2 3 5 6 7
result:
ok 2 lines
Test #16:
score: 0
Accepted
time: 0ms
memory: 3476kb
input:
9 29229
output:
NO
result:
ok single line: 'NO'
Test #17:
score: 0
Accepted
time: 1ms
memory: 3840kb
input:
9 32768
output:
NO
result:
ok single line: 'NO'
Test #18:
score: 0
Accepted
time: 0ms
memory: 3608kb
input:
2 1
output:
NO
result:
ok single line: 'NO'
Test #19:
score: 0
Accepted
time: 0ms
memory: 3552kb
input:
7 1
output:
NO
result:
ok single line: 'NO'
Test #20:
score: 0
Accepted
time: 0ms
memory: 3840kb
input:
13 296643390
output:
YES 13 12 11 7 1 2 3 4 5 6 8 9 10
result:
ok 2 lines
Test #21:
score: 0
Accepted
time: 0ms
memory: 3552kb
input:
13 296643391
output:
NO
result:
ok single line: 'NO'
Test #22:
score: 0
Accepted
time: 0ms
memory: 3820kb
input:
20 62119523114983223
output:
YES 20 19 18 17 16 10 2 1 3 4 5 6 7 8 9 11 12 13 14 15
result:
ok 2 lines
Test #23:
score: 0
Accepted
time: 1ms
memory: 3648kb
input:
20 62119523114983224
output:
YES 20 19 18 17 16 11 1 2 3 4 5 6 7 8 9 10 12 13 14 15
result:
ok 2 lines
Test #24:
score: 0
Accepted
time: 0ms
memory: 3512kb
input:
20 62119523114983225
output:
NO
result:
ok single line: 'NO'
Test #25:
score: 0
Accepted
time: 0ms
memory: 3876kb
input:
21 1
output:
YES 1 2 3 4 5 6 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7
result:
ok 2 lines
Test #26:
score: 0
Accepted
time: 0ms
memory: 3880kb
input:
21 1000000000000000000
output:
YES 17 21 14 6 9 4 3 11 7 2 20 1 18 15 12 16 5 10 8 13 19
result:
ok 2 lines
Test #27:
score: 0
Accepted
time: 0ms
memory: 3748kb
input:
44 333333333333333333
output:
YES 1 2 3 4 5 6 7 8 9 10 11 21 42 44 41 40 43 38 39 35 34 37 36 32 31 33 29 27 28 25 30 26 23 24 15 22 18 16 20 19 17 12 13 14
result:
ok 2 lines
Test #28:
score: 0
Accepted
time: 1ms
memory: 3848kb
input:
49 600000000000000000
output:
YES 1 2 3 4 5 6 7 8 9 10 11 12 13 37 47 49 44 46 45 48 43 42 41 39 40 35 38 33 31 36 34 30 27 32 25 28 29 26 24 23 17 22 20 19 21 18 16 15 14
result:
ok 2 lines
Test #29:
score: 0
Accepted
time: 0ms
memory: 3864kb
input:
16 738680521142
output:
YES 16 15 14 13 7 1 2 3 4 5 6 8 9 10 11 12
result:
ok 2 lines
Test #30:
score: 0
Accepted
time: 1ms
memory: 3556kb
input:
16 738680521143
output:
NO
result:
ok single line: 'NO'
Test #31:
score: 0
Accepted
time: 0ms
memory: 3608kb
input:
350 702274833889168257
output:
NO
result:
ok single line: 'NO'
Test #32:
score: 0
Accepted
time: 0ms
memory: 3544kb
input:
347 823694565238057857
output:
NO
result:
ok single line: 'NO'
Test #33:
score: 0
Accepted
time: 0ms
memory: 3984kb
input:
348 548514836018174081
output:
YES 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 ...
result:
ok 2 lines
Test #34:
score: 0
Accepted
time: 1ms
memory: 3716kb
input:
349 1000000000000000000
output:
YES 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 ...
result:
ok 2 lines
Test #35:
score: 0
Accepted
time: 0ms
memory: 3868kb
input:
17 11501573822788
output:
YES 17 16 15 14 11 1 2 3 4 5 6 7 8 9 10 12 13
result:
ok 2 lines
Test #36:
score: 0
Accepted
time: 1ms
memory: 3640kb
input:
17 11501573822789
output:
NO
result:
ok single line: 'NO'
Test #37:
score: 0
Accepted
time: 0ms
memory: 9968kb
input:
1536 1000000000000000000
output:
YES 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 ...
result:
ok 2 lines
Test #38:
score: 0
Accepted
time: 5ms
memory: 11360kb
input:
1533 1
output:
YES 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 ...
result:
ok 2 lines
Test #39:
score: 0
Accepted
time: 0ms
memory: 3616kb
input:
1534 639944301316494081
output:
NO
result:
ok single line: 'NO'
Test #40:
score: 0
Accepted
time: 1ms
memory: 3616kb
input:
1535 133749702370803553
output:
NO
result:
ok single line: 'NO'
Test #41:
score: 0
Accepted
time: 0ms
memory: 3676kb
input:
12 25598186
output:
YES 12 11 10 4 1 2 3 5 6 7 8 9
result:
ok 2 lines
Test #42:
score: 0
Accepted
time: 0ms
memory: 3604kb
input:
12 25598187
output:
NO
result:
ok single line: 'NO'
Test #43:
score: 0
Accepted
time: 11ms
memory: 34432kb
input:
5000 1
output:
YES 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 ...
result:
ok 2 lines
Test #44:
score: 0
Accepted
time: 7ms
memory: 46320kb
input:
4997 577621398254762881
output:
YES 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 ...
result:
ok 2 lines
Test #45:
score: 0
Accepted
time: 0ms
memory: 3596kb
input:
4998 1000000000000000000
output:
NO
result:
ok single line: 'NO'
Test #46:
score: 0
Accepted
time: 0ms
memory: 3576kb
input:
4999 1000000000000000000
output:
NO
result:
ok single line: 'NO'
Test #47:
score: 0
Accepted
time: 1ms
memory: 3572kb
input:
8 3836
output:
YES 8 7 2 1 3 4 5 6
result:
ok 2 lines
Test #48:
score: 0
Accepted
time: 1ms
memory: 3500kb
input:
8 3837
output:
NO
result:
ok single line: 'NO'
Test #49:
score: 0
Accepted
time: 4ms
memory: 16328kb
input:
30000 15298495309447071
output:
YES 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 ...
result:
ok 2 lines
Test #50:
score: 0
Accepted
time: 7ms
memory: 16316kb
input:
29997 253859976519879617
output:
YES 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 ...
result:
ok 2 lines
Test #51:
score: 0
Accepted
time: 1ms
memory: 3568kb
input:
29998 1
output:
NO
result:
ok single line: 'NO'
Test #52:
score: 0
Accepted
time: 0ms
memory: 3636kb
input:
29999 1000000000000000000
output:
NO
result:
ok single line: 'NO'
Test #53:
score: 0
Accepted
time: 0ms
memory: 3636kb
input:
5 10
output:
YES 3 2 4 5 1
result:
ok 2 lines
Test #54:
score: 0
Accepted
time: 0ms
memory: 3536kb
input:
5 25
output:
NO
result:
ok single line: 'NO'
Test #55:
score: 0
Accepted
time: 12ms
memory: 35544kb
input:
75000 1000000000000000000
output:
YES 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 ...
result:
ok 2 lines
Test #56:
score: 0
Accepted
time: 19ms
memory: 35724kb
input:
74997 1
output:
YES 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 ...
result:
ok 2 lines
Test #57:
score: 0
Accepted
time: 0ms
memory: 3500kb
input:
74998 952975592247715841
output:
NO
result:
ok single line: 'NO'
Test #58:
score: 0
Accepted
time: 0ms
memory: 3572kb
input:
74999 563899854863562881
output:
NO
result:
ok single line: 'NO'
Test #59:
score: 0
Accepted
time: 1ms
memory: 3880kb
input:
20 62119523114983182
output:
YES 20 19 18 17 16 9 1 2 4 3 5 7 6 8 10 11 12 13 14 15
result:
ok 2 lines
Test #60:
score: 0
Accepted
time: 0ms
memory: 3624kb
input:
20 62119523114983324
output:
NO
result:
ok single line: 'NO'
Test #61:
score: 0
Accepted
time: 28ms
memory: 57388kb
input:
125000 890645059675041665
output:
YES 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 ...
result:
ok 2 lines
Test #62:
score: 0
Accepted
time: 28ms
memory: 57284kb
input:
124997 1
output:
YES 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 ...
result:
ok 2 lines
Test #63:
score: 0
Accepted
time: 0ms
memory: 3840kb
input:
124998 873954992112723841
output:
NO
result:
ok single line: 'NO'
Test #64:
score: 0
Accepted
time: 0ms
memory: 3840kb
input:
124999 248632969637282529
output:
NO
result:
ok single line: 'NO'
Test #65:
score: 0
Accepted
time: 1ms
memory: 3596kb
input:
17 11501573822775
output:
YES 17 16 15 14 9 2 3 1 4 5 6 7 8 10 11 12 13
result:
ok 2 lines
Test #66:
score: 0
Accepted
time: 0ms
memory: 3776kb
input:
17 11501573823343
output:
NO
result:
ok single line: 'NO'
Test #67:
score: 0
Accepted
time: 39ms
memory: 79004kb
input:
175000 1000000000000000000
output:
YES 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 ...
result:
ok 2 lines
Test #68:
score: 0
Accepted
time: 44ms
memory: 78868kb
input:
174997 328322156846141249
output:
YES 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 ...
result:
ok 2 lines
Test #69:
score: 0
Accepted
time: 0ms
memory: 3548kb
input:
174998 184010129245469601
output:
NO
result:
ok single line: 'NO'
Test #70:
score: 0
Accepted
time: 0ms
memory: 3492kb
input:
174999 988653544556724225
output:
NO
result:
ok single line: 'NO'
Test #71:
score: 0
Accepted
time: 1ms
memory: 3656kb
input:
16 738680521137
output:
YES 16 15 14 13 6 1 2 3 4 7 5 8 9 10 11 12
result:
ok 2 lines
Test #72:
score: 0
Accepted
time: 0ms
memory: 3800kb
input:
16 738680521147
output:
NO
result:
ok single line: 'NO'
Test #73:
score: 0
Accepted
time: 54ms
memory: 111376kb
input:
250000 265999253667994753
output:
YES 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 ...
result:
ok 2 lines
Test #74:
score: 0
Accepted
time: 49ms
memory: 111372kb
input:
249997 1000000000000000000
output:
YES 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 ...
result:
ok 2 lines
Test #75:
score: 0
Accepted
time: 0ms
memory: 3636kb
input:
249998 994057636750856961
output:
NO
result:
ok single line: 'NO'
Test #76:
score: 0
Accepted
time: 0ms
memory: 3788kb
input:
249999 728689378265228289
output:
NO
result:
ok single line: 'NO'