QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#410422#5053. Random ShuffleBaiyu0123AC ✓408ms7764kbC++142.3kb2024-05-13 23:32:302024-05-13 23:32:30

Judging History

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

  • [2024-05-13 23:32:30]
  • 评测
  • 测评结果:AC
  • 用时:408ms
  • 内存:7764kb
  • [2024-05-13 23:32:30]
  • 提交

answer

#include<bits/stdc++.h>
#define ull unsigned long long
#define fi first
#define se second
#define mkp make_pair
using namespace std;
const int maxn=1e5+100;
ull S[64],T[64];
int n;
int a[maxn],w[maxn],rd[maxn];
void output(ull S) {
	for (int j=0;j<64;j++) {
		if (S&1ull<<j) cout<<j<<" ";
	}
	cout<<endl;
}
void move_to_left(int x) {
	for (int i=0;i<64;i++) {
		if (i-x>=0&&i-x<64) T[i]=S[i]^S[i-x];
		else T[i]=S[i];
	}
	for (int i=0;i<64;i++) {
		S[i]=T[i];
	}
}
void Rand() {
	move_to_left(13);
	move_to_left(-7);
	move_to_left(17);
}
pair<ull,int> Q[maxn],P[maxn];int pw=0;
void add(ull S,int x) {
	P[pw++]=mkp(S,x);
}
bool check(ull ans) {
	for (int i=1;i<=n;i++) {
		ans^=ans<<13;
		ans^=ans>>7;
		ans^=ans<<17;
		if (rd[i]!=(ans%i)) return 0;
	}
	return 1;
}
void calc() {
	int st=0;
	for (int i=0;i<64;i++) {
		if (!(P[st].fi&(1ull<<i))) {
			for (int j=st+1;j<pw;j++) {
				if (P[j].fi&(1ull<<i)) {
					swap(P[st],P[j]);
					break;
				}
			}
		}
		if (!(P[i].fi&(1ull<<i))) {
			continue;
		}
		//assert(P[i].fi&(1ull<<i));
		for (int j=0;j<pw;j++) {
			if (st==j||!(P[j].fi&(1ull<<i))) continue;
			P[j].fi^=P[st].fi;
			P[j].se^=P[st].se;
		}
		st++;
	}
	for (int i=0;i<st;i++) Q[i]=P[i];
	for (ull S=0;S<(1ull<<(64-st));S++) {
		for (int i=0;i<st;i++) P[i]=Q[i];
		for (int i=0;st+i<64;i++) {
			P[st+i]=mkp(1ull<<(st+i),(S&1ull<<i)>>i/*(16659580358178468547ull&1ull<<(st+i))>>(st+i)*/);
			for (int j=0;j<st;j++) {
				if (P[j].fi&(1ull<<(st+i))) {
					P[j].fi^=P[st+i].fi;
					P[j].se^=P[st+i].se;
				}
			}
		}
		ull ans=0;
		for (int i=0;i<64;i++) {
		//	cout<<i<<" "<<P[i].se<<" : ";
		//	output(P[i].fi);
		//	assert(P[i].fi==(1ull<<i));
			ans|=(1ull*P[i].se)<<i;
		}
		if (check(ans)) {
			cout<<ans<<endl;
			return ;
		}
	}
}
int main() {
	cin>>n;
	for (int i=1;i<=n;i++) cin>>a[i],w[a[i]]=i;
	for (int i=n;i>=1;i--) {
		w[a[i]]=w[i];
		rd[i]=w[i]-1;
		swap(a[i],a[w[i]]);
	}
	for (int i=0;i<64;i++) S[i]=1ull<<i;
	for (int i=1;i<=50;i++) {
		Rand();
		if (i%2==0) {
			for (int j=0;!(i&1<<j);j++) {
	//			cout<<i<<" "<<j<<endl;
				add(S[j],(rd[i]&(1<<j))>>(j));
			}
		}
	}
	calc();
	//cout<<check(16659580358178468547ull)<<endl;
	//cout<<pw<<endl;
	//Rand();Rand();
	//output();
}

詳細信息

Test #1:

score: 100
Accepted
time: 361ms
memory: 5664kb

input:

50
36 22 24 21 27 50 28 14 25 34 18 43 47 13 30 7 10 48 20 16 29 9 8 15 3 31 12 38 19 49 37 1 46 32 4 44 11 35 6 33 26 5 45 17 39 40 2 23 42 41

output:

16659580358178468547

result:

ok OK, Accepted.

Test #2:

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

input:

50
26 36 12 27 8 1 33 17 16 48 11 22 20 10 23 47 5 32 35 21 31 49 45 43 29 2 13 41 4 6 3 50 30 7 9 15 14 38 25 46 28 37 39 18 42 24 19 40 44 34

output:

1881993639894066979

result:

ok OK, Accepted.

Test #3:

score: 0
Accepted
time: 118ms
memory: 5552kb

input:

50
40 28 8 31 5 15 16 26 29 12 22 45 11 32 25 21 35 9 24 3 4 23 36 6 41 44 27 48 34 49 37 13 33 39 10 17 2 46 42 18 7 14 50 20 47 30 1 38 19 43

output:

5551150991024249731

result:

ok OK, Accepted.

Test #4:

score: 0
Accepted
time: 197ms
memory: 5552kb

input:

50
47 35 20 16 14 21 32 40 38 37 43 27 45 22 5 13 4 36 33 2 19 31 11 46 39 29 48 18 1 9 42 44 23 12 49 41 3 50 28 6 10 8 25 30 15 24 7 17 26 34

output:

9220308350744367075

result:

ok OK, Accepted.

Test #5:

score: 0
Accepted
time: 275ms
memory: 5592kb

input:

50
32 7 36 49 35 21 15 27 16 41 4 10 25 34 24 40 17 9 45 30 12 11 20 2 31 19 3 39 14 8 38 18 47 33 50 37 48 46 43 22 42 29 23 13 1 5 26 28 44 6

output:

12889465701874549827

result:

ok OK, Accepted.

Test #6:

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

input:

50
4 11 21 1 46 26 43 2 31 27 41 38 29 37 40 3 33 34 18 50 39 42 8 17 47 32 49 15 35 13 28 45 6 7 20 16 23 10 22 5 36 25 12 9 19 14 48 30 44 24

output:

16558623053004732579

result:

ok OK, Accepted.

Test #7:

score: 0
Accepted
time: 35ms
memory: 5748kb

input:

50
7 11 31 6 24 40 18 17 25 20 43 26 1 44 15 4 32 47 10 12 34 16 14 36 46 42 13 27 33 3 30 23 39 5 50 45 8 35 21 19 49 41 38 37 9 2 29 48 22 28

output:

1781036334720331011

result:

ok OK, Accepted.

Test #8:

score: 0
Accepted
time: 116ms
memory: 5752kb

input:

50
23 42 40 19 49 37 11 22 29 14 8 36 13 26 18 7 31 10 15 16 21 30 41 43 48 20 6 2 3 4 5 50 45 33 32 38 25 9 44 27 35 46 12 39 28 17 1 24 34 47

output:

5450193690145481059

result:

ok OK, Accepted.

Test #9:

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

input:

50
27 25 38 11 26 45 5 48 12 37 46 42 39 4 7 31 41 33 29 35 20 23 49 50 14 3 16 17 47 34 21 44 18 8 9 30 6 24 43 19 36 15 1 40 22 13 28 2 10 32

output:

9119351041275663811

result:

ok OK, Accepted.

Test #10:

score: 0
Accepted
time: 298ms
memory: 7764kb

input:

50
11 10 48 50 40 1 44 13 33 23 21 3 24 5 31 15 37 43 7 26 12 28 42 45 29 6 27 25 20 8 17 34 46 39 2 36 18 47 22 16 14 19 35 32 9 30 38 41 49 4

output:

14147710490869904115

result:

ok OK, Accepted.

Test #11:

score: 0
Accepted
time: 70ms
memory: 5676kb

input:

60
18 36 13 59 56 4 17 15 8 32 14 16 9 53 38 48 60 21 49 24 27 19 40 45 20 25 22 55 37 43 39 57 34 46 54 30 35 10 26 29 7 44 2 51 11 3 58 28 31 12 1 47 41 33 42 23 6 5 52 50

output:

3245388184900135407

result:

ok OK, Accepted.

Test #12:

score: 0
Accepted
time: 148ms
memory: 7704kb

input:

60
2 10 59 47 20 25 7 55 56 57 13 1 50 40 43 4 15 42 38 31 49 39 11 28 41 30 23 16 54 27 52 26 51 17 44 46 19 3 32 24 45 21 60 33 9 34 8 48 5 12 37 22 14 35 58 36 6 18 53 29

output:

6914545536030318160

result:

ok OK, Accepted.

Test #13:

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

input:

60
55 16 11 49 43 6 20 19 54 40 35 5 22 45 14 17 44 9 48 27 56 59 2 18 4 34 58 31 36 1 24 47 26 52 15 13 41 32 12 37 29 30 53 33 7 50 38 28 57 60 21 23 10 3 39 42 8 46 51 25

output:

10583702891455468208

result:

ok OK, Accepted.

Test #14:

score: 0
Accepted
time: 299ms
memory: 5660kb

input:

60
35 23 13 59 8 30 10 18 3 36 60 56 54 1 6 58 20 21 11 16 53 4 33 19 44 27 22 14 39 31 32 45 57 15 25 28 7 50 9 24 52 34 26 43 5 47 42 49 51 37 17 12 41 48 29 55 38 2 40 46

output:

14252860242585650960

result:

ok OK, Accepted.

Test #15:

score: 0
Accepted
time: 383ms
memory: 5748kb

input:

60
48 60 34 7 41 15 53 37 39 9 42 36 31 20 40 22 33 24 16 46 30 6 26 35 12 10 58 55 23 27 14 49 28 56 3 1 11 2 25 19 8 29 50 13 32 38 52 44 18 47 43 51 5 17 4 57 59 54 45 21

output:

17922017602305768304

result:

ok OK, Accepted.

Test #16:

score: 0
Accepted
time: 178ms
memory: 5748kb

input:

70
20 19 56 69 43 3 47 37 66 6 1 40 53 57 55 39 70 32 24 61 21 33 12 10 31 28 11 65 30 18 63 68 4 26 34 16 46 17 9 52 7 62 15 36 38 67 8 35 41 5 60 25 50 42 23 22 27 48 58 45 14 64 13 44 59 49 54 51 29 2

output:

8277940081036386588

result:

ok OK, Accepted.

Test #17:

score: 0
Accepted
time: 254ms
memory: 5736kb

input:

70
48 47 31 34 22 6 29 21 33 7 49 66 55 9 41 68 5 17 63 19 15 52 26 32 61 70 16 44 13 37 50 3 38 20 60 67 51 40 42 35 56 11 65 58 4 53 43 2 30 57 39 27 23 69 59 1 18 36 10 12 54 62 24 64 45 25 28 8 46 14

output:

11947097436461536636

result:

ok OK, Accepted.

Test #18:

score: 0
Accepted
time: 332ms
memory: 5604kb

input:

70
53 47 50 9 68 1 39 36 44 27 38 16 6 45 49 64 54 63 35 67 41 60 19 37 48 10 29 20 30 59 25 56 46 42 26 17 18 31 13 8 5 4 57 62 55 21 12 2 24 23 40 15 32 52 34 51 61 43 11 33 58 3 22 66 7 70 28 69 65 14

output:

15616254791886686684

result:

ok OK, Accepted.

Test #19:

score: 0
Accepted
time: 18ms
memory: 5716kb

input:

70
20 16 4 42 10 54 9 36 67 30 3 7 52 33 59 57 17 1 32 56 60 24 5 65 23 55 69 63 39 31 46 68 35 21 18 15 51 6 45 41 25 70 66 40 34 44 19 53 61 2 49 58 64 11 38 48 27 62 12 43 22 29 13 14 26 8 50 28 47 37

output:

838668069307317820

result:

ok OK, Accepted.

Test #20:

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

input:

70
68 33 21 22 7 12 6 27 57 60 69 49 48 53 70 20 59 43 54 24 14 10 25 30 52 45 11 63 40 46 41 28 65 56 29 64 9 47 61 23 1 58 34 38 13 8 31 32 19 35 2 67 3 51 5 66 17 42 18 62 16 36 55 26 44 37 39 50 4 15

output:

4507825420437500572

result:

ok OK, Accepted.

Test #21:

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

input:

80
49 39 52 59 15 5 74 56 78 50 18 3 19 1 2 30 76 10 28 43 36 26 57 23 35 34 8 48 65 4 22 79 58 37 17 20 45 11 32 6 47 38 71 80 41 60 13 75 12 24 66 70 77 16 25 54 55 61 69 53 29 9 42 68 46 62 14 72 73 21 63 44 7 31 67 64 51 33 40 27

output:

13310491977172637768

result:

ok OK, Accepted.

Test #22:

score: 0
Accepted
time: 363ms
memory: 5668kb

input:

80
56 67 36 42 52 73 38 18 80 9 2 62 5 54 59 33 16 37 66 75 71 61 17 20 57 60 19 1 64 27 58 51 6 39 49 34 7 32 69 65 45 24 48 79 21 31 12 11 22 30 26 72 35 63 47 68 77 74 70 53 8 43 25 14 13 41 78 76 23 3 44 55 10 28 50 4 29 46 40 15

output:

16979649332597787816

result:

ok OK, Accepted.

Test #23:

score: 0
Accepted
time: 47ms
memory: 5748kb

input:

80
8 12 3 46 21 72 73 15 50 32 47 39 31 45 55 63 62 76 23 34 18 68 48 40 30 80 60 78 51 75 43 61 42 9 35 16 79 74 10 70 58 4 44 56 1 65 14 20 28 11 36 7 5 19 17 77 54 2 53 52 37 64 29 49 33 6 67 26 27 22 66 24 41 57 59 71 13 38 69 25

output:

2202062614313386248

result:

ok OK, Accepted.

Test #24:

score: 0
Accepted
time: 125ms
memory: 5668kb

input:

80
74 23 25 41 38 69 42 2 33 76 19 54 8 70 37 34 40 46 72 27 75 80 3 64 57 78 67 79 20 36 21 50 71 11 62 9 12 15 73 65 43 63 51 49 16 59 35 28 77 22 61 10 45 18 24 26 56 7 13 14 30 32 44 4 55 58 31 1 68 6 53 5 52 39 66 60 47 29 17 48

output:

5871219969738536296

result:

ok OK, Accepted.

Test #25:

score: 0
Accepted
time: 199ms
memory: 5548kb

input:

80
50 4 28 18 51 23 16 5 39 59 1 56 44 19 45 75 20 21 26 41 42 24 38 3 9 15 62 77 53 35 72 12 73 29 64 7 30 74 6 76 67 55 49 52 8 27 22 11 68 47 70 37 34 31 17 10 78 57 48 13 36 25 71 58 43 14 60 66 65 46 40 32 63 54 80 33 79 69 2 61

output:

9540377320868719048

result:

ok OK, Accepted.

Test #26:

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

input:

100
93 100 16 35 18 69 77 90 89 94 4 51 87 29 59 64 79 22 38 19 46 45 58 61 82 73 66 99 26 44 41 15 55 57 85 49 53 32 13 56 74 54 8 71 88 36 60 91 12 98 43 83 37 67 75 92 31 30 39 81 97 95 65 23 52 5 48 50 34 70 76 28 25 27 14 20 80 47 2 10 17 84 9 7 1 33 3 63 40 24 68 96 21 86 6 11 62 42 78 72

output:

9372034917709956260

result:

ok OK, Accepted.

Test #27:

score: 0
Accepted
time: 279ms
memory: 5736kb

input:

100
54 21 13 36 48 88 75 67 23 27 37 20 89 77 6 55 79 73 12 4 57 86 15 24 74 62 68 19 2 97 10 78 76 44 61 58 34 83 43 84 93 3 96 22 8 16 14 71 41 64 49 39 32 47 70 42 82 60 66 38 87 1 17 51 40 18 7 81 59 80 31 91 63 85 92 25 35 29 90 9 5 33 50 72 65 69 26 95 100 46 30 45 11 53 56 99 94 98 52 28

output:

13041192273135106308

result:

ok OK, Accepted.

Test #28:

score: 0
Accepted
time: 351ms
memory: 5592kb

input:

100
64 80 14 61 43 54 28 79 77 24 21 38 60 94 56 22 62 12 69 7 71 75 98 52 59 68 34 58 44 39 97 73 53 92 25 50 76 85 4 30 31 47 90 10 18 19 33 96 1 72 83 35 23 8 15 84 29 48 49 41 82 11 88 40 42 70 65 27 93 13 78 51 99 45 17 32 91 20 3 36 55 6 87 26 63 5 46 57 67 95 74 16 9 100 81 66 2 86 89 37

output:

16710349624265289060

result:

ok OK, Accepted.

Test #29:

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

input:

100
72 82 64 37 50 85 34 59 11 80 66 9 69 79 77 61 15 41 63 26 56 94 42 33 27 30 40 20 68 97 45 6 29 96 78 18 19 67 44 75 95 16 98 54 87 35 53 23 39 31 21 100 43 60 48 2 99 3 93 46 10 8 13 73 76 7 71 70 25 81 58 88 65 89 5 91 55 84 24 22 47 36 49 4 62 83 14 32 17 74 57 92 52 12 38 90 51 86 28 1

output:

1932762905980887492

result:

ok OK, Accepted.

Test #30:

score: 0
Accepted
time: 119ms
memory: 5664kb

input:

100
92 55 24 33 80 68 34 89 15 39 93 60 99 51 86 16 37 49 22 57 100 38 41 45 28 4 17 20 64 21 1 5 96 90 77 2 65 26 9 23 50 79 44 48 43 3 81 12 91 35 27 25 71 67 6 62 52 78 72 7 42 8 87 32 40 58 53 19 13 69 76 61 97 59 70 46 74 63 98 83 47 31 54 29 10 95 18 11 88 85 30 36 66 82 84 73 75 56 14 94

output:

5601920257111070244

result:

ok OK, Accepted.

Test #31:

score: 0
Accepted
time: 35ms
memory: 5700kb

input:

1000
14 801 876 665 517 379 816 862 669 636 471 806 50 113 293 652 585 758 594 919 282 532 916 870 899 91 456 844 562 223 428 656 951 760 396 653 744 435 486 887 449 591 599 923 557 582 507 197 691 476 464 759 244 114 73 419 327 209 96 846 785 828 206 674 742 895 37 549 296 482 275 286 918 498 529 4...

output:

1601957447185507124

result:

ok OK, Accepted.

Test #32:

score: 0
Accepted
time: 163ms
memory: 5592kb

input:

10000
8488 3752 5772 3495 4540 2525 85 9115 7674 2753 4345 8859 1164 8515 2278 350 3632 8316 1394 172 6352 4168 2775 2069 5236 4146 6692 6925 1222 8341 9455 5785 5998 2579 6458 6397 4043 8563 7633 8348 3622 2802 4558 2911 747 1948 9329 3778 4803 6478 1590 7643 3099 9004 4528 4737 5941 991 9689 256 1...

output:

7604483965017321570

result:

ok OK, Accepted.

Test #33:

score: 0
Accepted
time: 399ms
memory: 6260kb

input:

100000
98458 53652 83234 44212 86777 91201 40842 73330 10976 49792 61331 57415 7021 96999 69196 44608 39826 16934 50858 33904 31103 58699 29546 91218 96992 71234 42816 81918 80692 97038 9396 73201 18264 46062 44975 86005 7196 6985 62915 36202 49770 7636 53980 9029 11019 43660 52488 48199 57296 75879...

output:

17967841127598789655

result:

ok OK, Accepted.

Test #34:

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

input:

50
50 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

output:

0

result:

ok OK, Accepted.

Test #35:

score: 0
Accepted
time: 189ms
memory: 5668kb

input:

50
12 40 24 22 39 50 32 26 41 8 38 48 28 49 42 45 44 23 5 16 36 2 9 37 10 15 34 18 20 1 31 13 14 3 30 33 21 29 43 35 27 17 6 47 4 19 46 25 7 11

output:

9223372036854775808

result:

ok OK, Accepted.

Test #36:

score: 0
Accepted
time: 256ms
memory: 5540kb

input:

50
17 20 40 34 43 21 45 13 25 7 41 29 33 12 6 26 37 3 32 22 5 11 44 47 42 36 15 28 39 49 4 19 35 8 16 24 48 50 14 10 30 1 31 9 2 23 27 18 46 38

output:

12223372036854775808

result:

ok OK, Accepted.

Test #37:

score: 0
Accepted
time: 388ms
memory: 5564kb

input:

50
47 14 37 36 43 2 34 26 48 6 45 11 27 22 9 42 4 13 33 46 18 25 12 19 32 49 8 40 15 7 1 29 44 24 20 17 30 50 16 35 39 21 28 41 10 23 3 5 38 31

output:

18446744073709551615

result:

ok OK, Accepted.

Test #38:

score: 0
Accepted
time: 14ms
memory: 6816kb

input:

100000
100000 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 9...

output:

0

result:

ok OK, Accepted.

Test #39:

score: 0
Accepted
time: 213ms
memory: 6772kb

input:

100000
82839 4570 40007 26592 17582 28077 42446 30175 13415 28222 96521 15740 56356 51662 82159 6782 82291 29178 45576 71513 64489 91101 70728 8178 32839 74729 95237 27071 61633 57277 64820 17785 95449 64837 85431 15345 56582 36978 99174 8077 79117 36083 39017 5834 95122 90789 34914 8247 46269 67980...

output:

9223372036854775808

result:

ok OK, Accepted.

Test #40:

score: 0
Accepted
time: 408ms
memory: 6440kb

input:

100000
19820 98878 59554 94113 95501 298 26997 41493 74443 19973 63466 98813 7604 44016 82921 94828 20071 25852 65754 67895 93811 37520 60312 81459 8312 40128 3165 65671 75422 35088 19340 26620 88752 99203 69553 10735 62787 72679 49099 22739 6613 67938 44453 51384 23070 983 88383 49704 32724 95008 4...

output:

18446744073709551615

result:

ok OK, Accepted.