QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#336029#8107. Permutationucup-team1209#AC ✓67ms247820kbC++201.7kb2024-02-24 11:41:122024-02-24 11:41:13

Judging History

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

  • [2024-02-24 11:41:13]
  • 评测
  • 测评结果:AC
  • 用时:67ms
  • 内存:247820kb
  • [2024-02-24 11:41:12]
  • 提交

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'