QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#336029 | #8107. Permutation | ucup-team1209# | AC ✓ | 67ms | 247820kb | C++20 | 1.7kb | 2024-02-24 11:41:12 | 2024-02-24 11:41:13 |
Judging History
answer
#include<bits/stdc++.h>
using std::cin;
using std::cout;
using ll = long long;
using u64 = unsigned long long;
using i128 = __int128;
const int N = 250005;
const int K = 110;
int n;
ll k;
ll dp[N][K];
int rank[N];
ll get(int n, ll k) {
k = std::min<ll>((ll)n * (n - 1) / 2 - k, k);
if(k >= K) return 2e18;
if(k < 0) return 0;
return dp[n][k];
}
int bit[N];
void inc(int x, int v) {
for(;x <= n;x += x & -x) {
bit[x] += v;
}
}
int qry(int x) {
int ans = 0;
for(;x;x &= x - 1) ans += bit[x];
return ans;
}
void dfs0(int x, ll inv, ll & k) {
if(k > get(n - x + 1, inv)) {
k -= get(n - x + 1, inv);
return ;
}
if(x > n) {
for(int i = 1;i <= n;++i) inc(i, 1);
cout << "YES\n";
for(int i = 1;i <= n;++i) {
int l = 0, r = n;
for(;l + 1 < r;) {
int mid = (l + r) >> 1;
if(qry(mid) >= rank[i] + 1) {
r = mid;
} else {
l = mid;
}
}
inc(r, - 1);
cout << r << " \n"[i == n];
}
exit(0);
}
ll nn = n - x;
nn = nn * (nn - 1) / 2;
for(int r = std::max<ll>(0, inv - nn);r <= n - x && r <= inv;++r) {
rank[x] = r;
dfs0(x + 1, inv - r, k);
}
}
int main() {
std::ios::sync_with_stdio(false), cin.tie(0);
cin >> n >> k;
dp[0][0] = 1;
for(int i = 1;i <= n;++i) {
i128 sum = 0;
for(int j = 0;j < i && j < K;++j) {
sum += dp[i - 1][j];
dp[i][j] = std::min<i128>(sum, k + 1);
}
for(int j = i;j < K;++j) {
sum += dp[i - 1][j];
sum -= dp[i - 1][j - i];
dp[i][j] = std::min<i128>(sum, k + 1);
}
}
ll inv = (ll) n * (n - 1) / 2;
if(inv % 2 || get(n, inv / 2) < k) {
cout << "NO" << '\n';
return 0;
}
inv /= 2;
dfs0(1, inv, k);
}
詳細信息
Test #1:
score: 100
Accepted
time: 1ms
memory: 5752kb
input:
4 3
output:
YES 2 4 1 3
result:
ok 2 lines
Test #2:
score: 0
Accepted
time: 0ms
memory: 5768kb
input:
4 57
output:
NO
result:
ok single line: 'NO'
Test #3:
score: 0
Accepted
time: 1ms
memory: 5748kb
input:
1 1
output:
YES 1
result:
ok 2 lines
Test #4:
score: 0
Accepted
time: 0ms
memory: 5744kb
input:
1 2
output:
NO
result:
ok single line: 'NO'
Test #5:
score: 0
Accepted
time: 0ms
memory: 5724kb
input:
1 42
output:
NO
result:
ok single line: 'NO'
Test #6:
score: 0
Accepted
time: 0ms
memory: 5664kb
input:
4 1
output:
YES 1 4 3 2
result:
ok 2 lines
Test #7:
score: 0
Accepted
time: 1ms
memory: 5752kb
input:
4 6
output:
YES 4 1 2 3
result:
ok 2 lines
Test #8:
score: 0
Accepted
time: 0ms
memory: 5780kb
input:
4 7
output:
NO
result:
ok single line: 'NO'
Test #9:
score: 0
Accepted
time: 0ms
memory: 5796kb
input:
5 13
output:
YES 3 4 2 1 5
result:
ok 2 lines
Test #10:
score: 0
Accepted
time: 1ms
memory: 5656kb
input:
5 21
output:
YES 5 1 3 2 4
result:
ok 2 lines
Test #11:
score: 0
Accepted
time: 1ms
memory: 5796kb
input:
5 22
output:
YES 5 2 1 3 4
result:
ok 2 lines
Test #12:
score: 0
Accepted
time: 1ms
memory: 5744kb
input:
5 23
output:
NO
result:
ok single line: 'NO'
Test #13:
score: 0
Accepted
time: 0ms
memory: 5736kb
input:
8 3836
output:
YES 8 7 2 1 3 4 5 6
result:
ok 2 lines
Test #14:
score: 0
Accepted
time: 1ms
memory: 5624kb
input:
8 3837
output:
NO
result:
ok single line: 'NO'
Test #15:
score: 0
Accepted
time: 0ms
memory: 5796kb
input:
9 29228
output:
YES 9 8 4 1 2 3 5 6 7
result:
ok 2 lines
Test #16:
score: 0
Accepted
time: 1ms
memory: 5672kb
input:
9 29229
output:
NO
result:
ok single line: 'NO'
Test #17:
score: 0
Accepted
time: 1ms
memory: 5668kb
input:
9 32768
output:
NO
result:
ok single line: 'NO'
Test #18:
score: 0
Accepted
time: 1ms
memory: 5728kb
input:
2 1
output:
NO
result:
ok single line: 'NO'
Test #19:
score: 0
Accepted
time: 1ms
memory: 5672kb
input:
7 1
output:
NO
result:
ok single line: 'NO'
Test #20:
score: 0
Accepted
time: 1ms
memory: 5720kb
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: 1ms
memory: 5744kb
input:
13 296643391
output:
NO
result:
ok single line: 'NO'
Test #22:
score: 0
Accepted
time: 1ms
memory: 5740kb
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: 5744kb
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: 1ms
memory: 5660kb
input:
20 62119523114983225
output:
NO
result:
ok single line: 'NO'
Test #25:
score: 0
Accepted
time: 1ms
memory: 5732kb
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: 1ms
memory: 5668kb
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: 1ms
memory: 5668kb
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: 5792kb
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: 1ms
memory: 5672kb
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: 5732kb
input:
16 738680521143
output:
NO
result:
ok single line: 'NO'
Test #31:
score: 0
Accepted
time: 1ms
memory: 5740kb
input:
350 702274833889168257
output:
NO
result:
ok single line: 'NO'
Test #32:
score: 0
Accepted
time: 1ms
memory: 5788kb
input:
347 823694565238057857
output:
NO
result:
ok single line: 'NO'
Test #33:
score: 0
Accepted
time: 1ms
memory: 5764kb
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: 5760kb
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: 1ms
memory: 5716kb
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: 5716kb
input:
17 11501573822789
output:
NO
result:
ok single line: 'NO'
Test #37:
score: 0
Accepted
time: 1ms
memory: 7952kb
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: 1ms
memory: 7940kb
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: 1ms
memory: 7792kb
input:
1534 639944301316494081
output:
NO
result:
ok single line: 'NO'
Test #40:
score: 0
Accepted
time: 1ms
memory: 5668kb
input:
1535 133749702370803553
output:
NO
result:
ok single line: 'NO'
Test #41:
score: 0
Accepted
time: 1ms
memory: 5736kb
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: 1ms
memory: 5668kb
input:
12 25598187
output:
NO
result:
ok single line: 'NO'
Test #43:
score: 0
Accepted
time: 2ms
memory: 10416kb
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: 2ms
memory: 10356kb
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: 1ms
memory: 9792kb
input:
4998 1000000000000000000
output:
NO
result:
ok single line: 'NO'
Test #46:
score: 0
Accepted
time: 2ms
memory: 9776kb
input:
4999 1000000000000000000
output:
NO
result:
ok single line: 'NO'
Test #47:
score: 0
Accepted
time: 1ms
memory: 5788kb
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: 5712kb
input:
8 3837
output:
NO
result:
ok single line: 'NO'
Test #49:
score: 0
Accepted
time: 4ms
memory: 35740kb
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: 4ms
memory: 33876kb
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: 3ms
memory: 30368kb
input:
29998 1
output:
NO
result:
ok single line: 'NO'
Test #52:
score: 0
Accepted
time: 0ms
memory: 30320kb
input:
29999 1000000000000000000
output:
NO
result:
ok single line: 'NO'
Test #53:
score: 0
Accepted
time: 1ms
memory: 5716kb
input:
5 10
output:
YES 3 2 4 5 1
result:
ok 2 lines
Test #54:
score: 0
Accepted
time: 1ms
memory: 5676kb
input:
5 25
output:
NO
result:
ok single line: 'NO'
Test #55:
score: 0
Accepted
time: 19ms
memory: 77872kb
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: 11ms
memory: 79616kb
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: 69284kb
input:
74998 952975592247715841
output:
NO
result:
ok single line: 'NO'
Test #58:
score: 0
Accepted
time: 11ms
memory: 69208kb
input:
74999 563899854863562881
output:
NO
result:
ok single line: 'NO'
Test #59:
score: 0
Accepted
time: 0ms
memory: 3664kb
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: 3700kb
input:
20 62119523114983324
output:
NO
result:
ok single line: 'NO'
Test #61:
score: 0
Accepted
time: 35ms
memory: 128104kb
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: 32ms
memory: 126892kb
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: 11ms
memory: 112208kb
input:
124998 873954992112723841
output:
NO
result:
ok single line: 'NO'
Test #64:
score: 0
Accepted
time: 12ms
memory: 114216kb
input:
124999 248632969637282529
output:
NO
result:
ok single line: 'NO'
Test #65:
score: 0
Accepted
time: 1ms
memory: 5732kb
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: 1ms
memory: 5724kb
input:
17 11501573823343
output:
NO
result:
ok single line: 'NO'
Test #67:
score: 0
Accepted
time: 52ms
memory: 175740kb
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: 49ms
memory: 175676kb
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: 20ms
memory: 157276kb
input:
174998 184010129245469601
output:
NO
result:
ok single line: 'NO'
Test #70:
score: 0
Accepted
time: 15ms
memory: 155248kb
input:
174999 988653544556724225
output:
NO
result:
ok single line: 'NO'
Test #71:
score: 0
Accepted
time: 1ms
memory: 5664kb
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: 1ms
memory: 5792kb
input:
16 738680521147
output:
NO
result:
ok single line: 'NO'
Test #73:
score: 0
Accepted
time: 67ms
memory: 247820kb
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: 64ms
memory: 247756kb
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: 11ms
memory: 219676kb
input:
249998 994057636750856961
output:
NO
result:
ok single line: 'NO'
Test #76:
score: 0
Accepted
time: 24ms
memory: 218828kb
input:
249999 728689378265228289
output:
NO
result:
ok single line: 'NO'