QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#373181#8307. Club Assignmentkevinyang#AC ✓215ms26332kbC++232.8kb2024-04-01 06:20:432024-04-01 06:20:44

Judging History

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

  • [2024-04-01 06:20:44]
  • 评测
  • 测评结果:AC
  • 用时:215ms
  • 内存:26332kb
  • [2024-04-01 06:20:43]
  • 提交

answer

#include <iostream>
#include <vector>
#include <cassert>
using namespace std;
using ll = long long;
const ll inf = 1e18;

using vl = vector<ll>;

vector<vector<vector<int>>> parts[5];

ll xorVl(vl &vals) {
	if (vals.size() == 0) return inf;
	ll a = 0;
	for (ll i : vals) a^= i;
	return a;
}

vl arr;
struct Ans {
	ll a = inf, b = inf;
	vl l, r;
	bool operator<(const Ans &rhs) const {
		return min(a,b) < min(rhs.a, rhs.b);
	}
};
Ans solve(vl vals, int bit=31) {
	if (vals.size() == 0) {
		return {inf, inf, {}, {} };
	}
	if (vals.size() == 1) {
		return {inf, inf, vals, {} };
	}
	if (vals.size() == 2) {
		return {inf, inf, {vals[0]}, {vals[1]}};
	}
	if (bit == -1) {
		for (int i = 1; i < vals.size(); i++) assert(arr[vals[i]] == arr[vals[0]]);
		vals.pop_back();
		return { 0, inf, vals, {vals[0]} };
	}
	vl l, r;
	for (ll i : vals) {
		if (arr[i]&(1<<bit)) r.push_back(i);
		else l.push_back(i);
	}

	if (r.size() == 1) {
		if (l.size() == 0) {
			Ans a = { inf, inf, { r[0] }, { } };
			return a;
		}
		if (l.size() == 1) {
			Ans a = { arr[l[0]] ^ arr[r[0]], inf, { l[0], r[0] }, { l[1] } };
			Ans b = { arr[l[1]] ^ arr[r[0]], inf, { l[1], r[0] }, { l[0] } };
			return max(a,b);
		}
		else if (l.size() == 2) {
			Ans a = { arr[l[0]] ^ arr[r[0]], inf, { l[0], r[0] }, { l[1] } };
			Ans b = { arr[l[1]] ^ arr[r[0]], inf, { l[1], r[0] }, { l[0] } };
			return max(a,b);
		}
	}

	if (r.size() == 2) {
		if (l.size() == 0) {
			Ans a = { inf, inf, { r[0] }, { r[1] } };
			return a;
		}
		if (l.size() == 1) {
			Ans a = { arr[l[0]] ^ arr[r[0]], inf, { l[0], r[0] }, { r[1] } };
			Ans b = { arr[l[0]] ^ arr[r[1]], inf, { l[0], r[1] }, { r[0] } };
			return max(a,b);
		}
		else if (l.size() == 2) {
			Ans a = { arr[l[0]] ^ arr[r[0]], arr[l[1]] ^ arr[r[1]], { l[0], r[0] }, { l[1], r[1] } };
			Ans b = { arr[l[0]] ^ arr[r[1]], arr[l[1]] ^ arr[r[0]], { l[0], r[1] }, { l[1], r[0] } };
			return max(a,b);
		}
	}

	Ans x = solve(l, bit-1), y = solve(r, bit-1);
	Ans out = { min(x.a, y.a), min(x.b, y.b), {}, {} };
	while (x.l.size()) {
		out.l.push_back(x.l.back());
		x.l.pop_back();
	}
	while (y.l.size()) {
		out.l.push_back(y.l.back());
		y.l.pop_back();
	}

	while (x.r.size()) {
		out.r.push_back(x.r.back());
		x.r.pop_back();
	}
	while (y.r.size()) {
		out.r.push_back(y.r.back());
		y.r.pop_back();
	}
	return out;
}

void solve() {
	int n; cin >> n;
	arr.resize(n);
	for (ll &i : arr) cin >> i;
	vl idxs(n);
	for (int i = 0; i < n; i++) idxs[i] = i;
	Ans out = solve(idxs);
	cout << min(out.a, out.b) << endl;
	vector<int> col(n, 1);
	for (int i : out.l) col[i] = 2;
	for (int i : col) cout << 2 - (i == col[0]);
	cout << endl;
}

int main() {
	int t; cin >> t;
	while (t--) solve();
}

这程序好像有点Bug,我给组数据试试?

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 1ms
memory: 3552kb

input:

2
3
1 2 3
3
5 5 5

output:

3
112
0
112

result:

ok accepted

Test #2:

score: 0
Accepted
time: 103ms
memory: 3696kb

input:

2000
100
7 90 64 59 9 12 72 41 72 45 35 90 65 43 81 37 49 62 42 61 12 3 30 97 3 21 43 44 18 71 3 8 70 25 55 41 43 26 80 36 11 6 36 5 57 7 35 23 72 27 73 45 2 64 86 90 47 93 54 26 7 48 63 40 1 61 35 45 11 80 90 68 20 6 22 92 57 47 37 8 84 43 51 95 20 44 89 25 65 18 79 77 5 2 85 62 63 27 62 72
100
34 ...

output:

0
1111111111111111211121111111112121121111112111111111121112222111122222211221222222112212221222112222
0
1111111111112121112111111111111111111111121211111211111221221222122112221222222112221222212122221122
0
11111111112111111211111111111111121111211212111121121211112112211122211222122221112112121212...

result:

ok accepted

Test #3:

score: 0
Accepted
time: 109ms
memory: 4044kb

input:

200
1000
97 76 593 917 428 944 219 473 261 128 920 740 977 978 694 944 856 329 655 861 641 631 249 859 612 547 726 765 705 192 777 483 948 701 754 764 346 237 68 849 437 94 692 717 630 562 350 156 1000 511 27 594 394 866 475 914 90 578 830 561 977 454 676 291 920 240 107 298 451 175 490 545 718 835 ...

output:

0
1211111111121112111111121111111111111112111111111111111111111211111111111111111111111112111111111111111111111111111221111111111111111111111111111111111111111111111112111111211111121211112111211111111111111121111111111111111121211111112111111212121111211111111112111111111111111111112121111111111111...

result:

ok accepted

Test #4:

score: 0
Accepted
time: 114ms
memory: 7352kb

input:

20
10000
7358 1871 8343 6135 4994 4079 3743 4186 527 4232 7581 7898 9666 8358 5102 125 2834 5982 8666 1280 5573 5739 3503 7360 4838 6780 8600 1007 1288 3064 3041 2499 773 4230 6504 7856 5525 3334 6103 3311 1226 6944 2435 2583 8520 7352 2368 3628 7223 9814 3860 7489 8326 5247 676 5151 2620 7377 7776 ...

output:

0
1111111111111111112111111111111111111111111111111111111111121111112111111111211111111111111111111111111111111111111111111111112111111111111111111111111111111111111111111112111111111111112111111111111111111111111111121111111111111111211111221111111111111111111121111121111111111121111111111111111111...

result:

ok accepted

Test #5:

score: 0
Accepted
time: 111ms
memory: 13380kb

input:

2
100000
218410698 619540136 204059004 828710620 433760707 858949452 56646112 343599233 518371279 912235738 799450998 326791937 997127468 922411567 674148810 889617381 91785714 334607795 359332260 175429017 274919417 819231450 913356616 280261257 637218211 804856990 65884496 965434998 482413448 3087...

output:

174
12111121111112221111211111111111221121111112111122211111121121212111112111221111111111111211212221211111112111111121111111121111111211211111112212111111112111121211111111111111211112111111112221111221111111111111112111111121111111112111211111121111121111121111111111112111111111121112112212111111...

result:

ok accepted

Test #6:

score: 0
Accepted
time: 126ms
memory: 13528kb

input:

2
100000
45952020 43003530 739180636 232767573 928337854 143603361 924998273 796606214 887978620 676123110 595413672 655383019 412391053 668472352 900665348 221270516 314314511 996768891 510349335 976288889 458956574 244172022 224900343 843998667 443023193 258664781 428071249 674088601 906425324 818...

output:

51
111111112112112111211111111111211112211111111121211212212111122111121212112111111211112121111111111111111121112112211111111111211111221211111111111212211111121111211111122111111112121111111211111111211111212211112121111111111111111111121111111111111212111212111111111221111211112111121212111211111...

result:

ok accepted

Test #7:

score: 0
Accepted
time: 123ms
memory: 13320kb

input:

2
100000
324060983 423975639 78065962 741281065 952530874 832828146 707841582 336594075 743524679 52184684 668286910 947430308 566647354 609915099 243838528 856841453 735467021 395320501 812917090 384828337 733188613 600906008 279756620 852934734 501320489 951804546 551979949 548694006 239218612 657...

output:

123
11112111111111111111111221211111122112111121112111112111111211212111111111211111111122211211112111111111111221221111111111111111111211121111211111111211212211112211221111111121111111111121121111111121212211121112121121112112221121211121111111211111211111111111111121112111121122112121111211111111...

result:

ok accepted

Test #8:

score: 0
Accepted
time: 127ms
memory: 13368kb

input:

2
100000
645808205 596421158 828608492 741755672 575429555 422819108 27948943 49756965 597845168 967876020 389765414 910234806 12837665 509211680 693343477 674806907 854395084 451492301 670063415 927393016 820001775 467358808 665476077 837216106 84383051 700506954 24534089 153318845 711873152 289359...

output:

26
121111211221121111111211111121111111211111121111211211112211112112111111112111111111111111222112221111211111111111111111121111121222111121111112121111112211111111221112111121111121112122111211211111112111122112211121111111111111111121211122111111122121222111122111211111211212221211112121211111111...

result:

ok accepted

Test #9:

score: 0
Accepted
time: 91ms
memory: 4028kb

input:

60
3000
395876099 358329090 202043778 195559313 254936094 16398849 45756931 132764931 76461320 135497869 418058647 147099536 407816577 216372353 481862294 42000129 419413250 450811521 63495425 388701064 384263070 19473421 357315733 395876125 279500675 57699481 55989916 368907800 62815361 423516163 2...

output:

332185
11121111111111111211111211111111111111111111211111111111121111221111121111111121212121221212211111211111121121111211121111122111211111212111112121112112211112112111121211111111111212111121221111111121112111111111111111121211122211121111112212111111111111121112112111111111111112111111222111112...

result:

ok accepted

Test #10:

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

input:

2
100000
507178766 163687811 411956866 85087132 508806531 209890449 458005890 485265665 196036993 284356481 316468128 172403458 5839746 256974219 317615754 173968513 365579906 30026144 169925506 494563853 163053569 88085778 233741187 160727939 496540557 236586627 51396128 412694029 376036225 3889998...

output:

8200
1122222221212222222222222221222122211112212221221211222212212212221212222222122222222222122221222221222212211212221212212222222222212222221221121222222212222121222122222222211222222222122112222222222222222222222221222222222222222212222212212111112222222122222222222112222211122222222222222222122...

result:

ok accepted

Test #11:

score: 0
Accepted
time: 215ms
memory: 4288kb

input:

60
3000
337511938 249817344 179524364 259713164 330009344 61787392 94543500 290085644 336838528 276430336 92847490 238901516 257662978 322847884 184983308 201702914 152555788 204092044 150509568 235827458 105815820 13328258 58721792 222172812 94203778 221836418 136520834 168261632 96603020 114679426...

output:

14
121122112211111111211121111211111211111111112221212111221111111122112122211122211112211221211121211111121111221111111111111222122112122221111112211111121121112111121121222211111121112111112112111112111111211211111122111112111212112112221111111212211111122111111111112112112121111211122111112211121...

result:

ok accepted

Test #12:

score: 0
Accepted
time: 203ms
memory: 15300kb

input:

2
99999
26872320 11378188 92725632 299758348 38637184 28110466 259842176 336508418 183081986 62270976 281121408 290264194 151789698 218227458 224093068 336191232 260661132 87849996 222147712 118694156 82002828 113554306 264162572 275202432 314031104 308686466 188940034 211109120 196322444 159838722 ...

output:

14
121212122112222122122221122122211221122222222121222222111222222121122212211221222222212221221222122222222212221212112222111121221222112121221221122222222211211222122222222112122212222222222112222111221122122221222211121222221221222212222212221121221122222222212111111111212211212122121221221211212...

result:

ok accepted

Test #13:

score: 0
Accepted
time: 105ms
memory: 26332kb

input:

2
100000
664174 3699447 2989290 3133937 733293 432010 960975 1009770 2894902 3133287 2585854 867938 781291 3304247 2208015 2647539 3099219 164967 2247690 1499689 1350168 2591211 2176174 686579 2097381 1264892 3121613 2579857 1332416 2355218 601058 679055 735128 1301455 2149378 2717051 2208574 651296...

output:

64
111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111121111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111121111111111111111111111111111...

result:

ok accepted

Extra Test:

score: 0
Extra Test Passed