QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#819002#8107. PermutationpeimudaAC ✓87ms213564kbC++111.6kb2024-12-18 11:37:052024-12-18 11:37:06

Judging History

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

  • [2024-12-18 11:37:06]
  • 评测
  • 测评结果:AC
  • 用时:87ms
  • 内存:213564kb
  • [2024-12-18 11:37:05]
  • 提交

answer

#include<set>
#include<map>
#include<queue>
#include<vector>
#include<algorithm>
#include<bits/stdc++.h>
#define pr pair
#define f first
#define s second
#define ll long long
#define mp make_pair
#define pll pr<ll,ll>
#define pii pr<int,int>
#define piii pr<int,pii>
using namespace std;
int hd[250005];
ll dp[250005][106];
__int128 pf[106];
int rs[250005];
int s[250005];
void add(int x,int v)
{
	while(x<=250004)
	{
		s[x]+=v;
		x+=x&-x;
	}
}
int fl(int x)
{
	int l=0,m,r=262144;
	while(l<r-1)
	{
		m=l+r>>1;
		if(m>250004) r=m;
		else if(s[m]<=x) x-=s[m],l=m;
		else r=m;
	}
	return r;
}
int main()
{
	ios_base::sync_with_stdio(0);
	int n;
	ll rk;
	cin>>n>>rk;
	__int128 k=rk;
	if(n%4==3||n%4==2)
	{
		cout<<"NO\n";
		return 0;
	}
	ll tot=1ll*n*(n-1)/2;
	ll hf=tot/2;
	int ad=min(hf,105ll);
	hf+=ad;
	for(int i=n-1;i>=0;i--)
	{
		hd[i]=min(n-i-1ll,hf);
		hf-=hd[i];
	}
	dp[n][0]=1;
	__int128 inf=2e18;
	for(int i=1;i<=ad+1;i++) pf[i]=1;
	for(int i=n-1;i>=0;i--)
	{
		for(int j=0;j<=ad;j++)
		{
			dp[i][j]=min(pf[j+1]-pf[max(0,j-hd[i])],inf);
//		cout<<"FF "<<i<<' '<<j<<' '<<(ll)dp[i][j]<<endl;
		}
		for(int j=0;j<=ad;j++) pf[j+1]=pf[j]+dp[i][j];
	}
	if(dp[0][ad]>1e18) cerr<<"Big"<<endl;
	if(dp[0][ad]<k)
	{
//		cout<<"FF "<<(ll)dp[0][ad]<<endl;
		cout<<"NO\n";
		return 0;
	}
	int cr=ad;
	for(int i=0;i<n;i++)
	{
		for(int j=min(cr,hd[i]);j>=0;j--)
		{
			if(dp[i+1][cr-j]>=k)
			{
				rs[i]=hd[i]-j;
				cr-=j;
				break;
			}
			k-=dp[i+1][cr-j];
		}
	}
	for(int i=0;i<n;i++) add(i+1,1);
	cout<<"YES\n";
	for(int i=0;i<n;i++)
	{
		int g=fl(rs[i]);
		add(g,-1);
		cout<<g<<' ';
	}
	cout<<endl;
	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 5732kb

input:

4 3

output:

YES
2 4 1 3 

result:

ok 2 lines

Test #2:

score: 0
Accepted
time: 1ms
memory: 5652kb

input:

4 57

output:

NO

result:

ok single line: 'NO'

Test #3:

score: 0
Accepted
time: 1ms
memory: 7708kb

input:

1 1

output:

YES
1 

result:

ok 2 lines

Test #4:

score: 0
Accepted
time: 0ms
memory: 7592kb

input:

1 2

output:

NO

result:

ok single line: 'NO'

Test #5:

score: 0
Accepted
time: 1ms
memory: 5692kb

input:

1 42

output:

NO

result:

ok single line: 'NO'

Test #6:

score: 0
Accepted
time: 1ms
memory: 7724kb

input:

4 1

output:

YES
1 4 3 2 

result:

ok 2 lines

Test #7:

score: 0
Accepted
time: 1ms
memory: 7656kb

input:

4 6

output:

YES
4 1 2 3 

result:

ok 2 lines

Test #8:

score: 0
Accepted
time: 1ms
memory: 7636kb

input:

4 7

output:

NO

result:

ok single line: 'NO'

Test #9:

score: 0
Accepted
time: 1ms
memory: 5600kb

input:

5 13

output:

YES
3 4 2 1 5 

result:

ok 2 lines

Test #10:

score: 0
Accepted
time: 1ms
memory: 5756kb

input:

5 21

output:

YES
5 1 3 2 4 

result:

ok 2 lines

Test #11:

score: 0
Accepted
time: 0ms
memory: 7720kb

input:

5 22

output:

YES
5 2 1 3 4 

result:

ok 2 lines

Test #12:

score: 0
Accepted
time: 1ms
memory: 7700kb

input:

5 23

output:

NO

result:

ok single line: 'NO'

Test #13:

score: 0
Accepted
time: 1ms
memory: 5688kb

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: 3540kb

input:

8 3837

output:

NO

result:

ok single line: 'NO'

Test #15:

score: 0
Accepted
time: 1ms
memory: 7728kb

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: 7632kb

input:

9 29229

output:

NO

result:

ok single line: 'NO'

Test #17:

score: 0
Accepted
time: 0ms
memory: 7672kb

input:

9 32768

output:

NO

result:

ok single line: 'NO'

Test #18:

score: 0
Accepted
time: 0ms
memory: 3596kb

input:

2 1

output:

NO

result:

ok single line: 'NO'

Test #19:

score: 0
Accepted
time: 0ms
memory: 3572kb

input:

7 1

output:

NO

result:

ok single line: 'NO'

Test #20:

score: 0
Accepted
time: 0ms
memory: 5672kb

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: 5628kb

input:

13 296643391

output:

NO

result:

ok single line: 'NO'

Test #22:

score: 0
Accepted
time: 0ms
memory: 7728kb

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: 0ms
memory: 7768kb

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: 3564kb

input:

20 62119523114983225

output:

NO

result:

ok single line: 'NO'

Test #25:

score: 0
Accepted
time: 1ms
memory: 5740kb

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: 5692kb

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: 7720kb

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: 5620kb

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: 5712kb

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: 5616kb

input:

16 738680521143

output:

NO

result:

ok single line: 'NO'

Test #31:

score: 0
Accepted
time: 0ms
memory: 3644kb

input:

350 702274833889168257

output:

NO

result:

ok single line: 'NO'

Test #32:

score: 0
Accepted
time: 0ms
memory: 3540kb

input:

347 823694565238057857

output:

NO

result:

ok single line: 'NO'

Test #33:

score: 0
Accepted
time: 1ms
memory: 7664kb

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: 5612kb

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: 7656kb

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: 0ms
memory: 5752kb

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: 2ms
memory: 9776kb

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: 3536kb

input:

1534 639944301316494081

output:

NO

result:

ok single line: 'NO'

Test #40:

score: 0
Accepted
time: 0ms
memory: 3600kb

input:

1535 133749702370803553

output:

NO

result:

ok single line: 'NO'

Test #41:

score: 0
Accepted
time: 0ms
memory: 5688kb

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: 7740kb

input:

12 25598187

output:

NO

result:

ok single line: 'NO'

Test #43:

score: 0
Accepted
time: 3ms
memory: 9840kb

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: 0ms
memory: 9796kb

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: 3600kb

input:

4998 1000000000000000000

output:

NO

result:

ok single line: 'NO'

Test #46:

score: 0
Accepted
time: 0ms
memory: 3536kb

input:

4999 1000000000000000000

output:

NO

result:

ok single line: 'NO'

Test #47:

score: 0
Accepted
time: 1ms
memory: 5656kb

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: 5644kb

input:

8 3837

output:

NO

result:

ok single line: 'NO'

Test #49:

score: 0
Accepted
time: 7ms
memory: 34448kb

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: 3ms
memory: 30652kb

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: 0ms
memory: 3604kb

input:

29998 1

output:

NO

result:

ok single line: 'NO'

Test #52:

score: 0
Accepted
time: 0ms
memory: 3576kb

input:

29999 1000000000000000000

output:

NO

result:

ok single line: 'NO'

Test #53:

score: 0
Accepted
time: 1ms
memory: 5744kb

input:

5 10

output:

YES
3 2 4 5 1 

result:

ok 2 lines

Test #54:

score: 0
Accepted
time: 1ms
memory: 7632kb

input:

5 25

output:

NO

result:

ok single line: 'NO'

Test #55:

score: 0
Accepted
time: 20ms
memory: 68052kb

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: 28ms
memory: 69424kb

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: 3536kb

input:

74998 952975592247715841

output:

NO

result:

ok single line: 'NO'

Test #58:

score: 0
Accepted
time: 0ms
memory: 3596kb

input:

74999 563899854863562881

output:

NO

result:

ok single line: 'NO'

Test #59:

score: 0
Accepted
time: 1ms
memory: 7728kb

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: 7632kb

input:

20 62119523114983324

output:

NO

result:

ok single line: 'NO'

Test #61:

score: 0
Accepted
time: 55ms
memory: 112588kb

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: 50ms
memory: 112708kb

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: 3604kb

input:

124998 873954992112723841

output:

NO

result:

ok single line: 'NO'

Test #64:

score: 0
Accepted
time: 0ms
memory: 3604kb

input:

124999 248632969637282529

output:

NO

result:

ok single line: 'NO'

Test #65:

score: 0
Accepted
time: 1ms
memory: 5684kb

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: 7624kb

input:

17 11501573823343

output:

NO

result:

ok single line: 'NO'

Test #67:

score: 0
Accepted
time: 59ms
memory: 152536kb

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: 51ms
memory: 153816kb

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: 3580kb

input:

174998 184010129245469601

output:

NO

result:

ok single line: 'NO'

Test #70:

score: 0
Accepted
time: 0ms
memory: 3576kb

input:

174999 988653544556724225

output:

NO

result:

ok single line: 'NO'

Test #71:

score: 0
Accepted
time: 0ms
memory: 7628kb

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: 7688kb

input:

16 738680521147

output:

NO

result:

ok single line: 'NO'

Test #73:

score: 0
Accepted
time: 87ms
memory: 213560kb

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: 60ms
memory: 213564kb

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: 3600kb

input:

249998 994057636750856961

output:

NO

result:

ok single line: 'NO'

Test #76:

score: 0
Accepted
time: 0ms
memory: 3536kb

input:

249999 728689378265228289

output:

NO

result:

ok single line: 'NO'