QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#830161#9914. 前往何方kgqy0 274ms6056kbC++141.9kb2024-12-24 16:26:402024-12-24 16:26:40

Judging History

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

  • [2024-12-24 16:26:40]
  • 评测
  • 测评结果:0
  • 用时:274ms
  • 内存:6056kb
  • [2024-12-24 16:26:40]
  • 提交

answer

#include<bits/stdc++.h>
#include "wheretoreach.h"
using namespace std;
int al,ed;
int tims;
vector<int> vec;
vector<int> tv,ct;
int rk[100005];
int vis[100005];
int tadd(int u){
	vis[rk[u]]=1;
	return add(rk[u]);
}
int tremove(int u){
	if(!vis[rk[u]]) return 0;
	vis[rk[u]]=0;
	return remove(rk[u]);
}
void treport(int u,int v){
	tims++;
	report(rk[u],rk[v]);
}
void bs(int l,int r,vector<int> nt){
	if(!nt.size()) return;
	if(tims==al-1) return;
	// printf("lr %d %d\nnt:",l,r);
	// for(int i=0;i<nt.size();i++) printf("%d ",nt[i]);puts("");
	if(l==r){
		for(int i=0;i<nt.size();i++){
			// printf("REPORTER %d %d\n",nt[i],tv[l]);
			treport(nt[i],tv[l]);
		}
		return;
	}
	vector<int> lt,rt;
	int mid=(l+r)>>1;
	if(l!=0||r!=ed)
	for(int i=l;i<=mid;i++) tadd(tv[i]);
	for(int i=0;i<nt.size();i++){
		int p=tadd(nt[i]);
		if(p>1) lt.push_back(nt[i]);
		else rt.push_back(nt[i]);
		tremove(nt[i]);
	}
	for(int i=l;i<=mid;i++) tremove(tv[i]);
	bs(l,mid,lt);
	if(tims==al-1) return;
	if(lt.size()){
		for(int i=mid+1;i<=r;i++) tadd(tv[i]);
		for(int i=0;i<lt.size();i++){
			int p=tadd(lt[i]);
			if(p>1) rt.push_back(lt[i]);
			tremove(lt[i]);
		}
		for(int i=mid+1;i<=r;i++) tremove(tv[i]);
	}
	bs(mid+1,r,rt);
}
void mian(){
	tv.clear();ct.clear();
	for(int i=1;i<=al;i++) vis[i]=0;
	for(int i=0;i<vec.size();i++){
		int p=tadd(vec[i]);
		if(p>1) ct.push_back(vec[i]),tremove(vec[i]);
		else tv.push_back(vec[i]);
	}
	// for(int i=0;i<tv.size();i++) printf("%d ",tv[i]);puts("");
	if(!ct.size()) return vec.clear();
	int mid=(0+tv.size())>>1;
	ed=tv.size()-1;
	for(int i=mid+1;i<tv.size();i++) tremove(tv[i]);
	bs(0,tv.size()-1,ct);
	vec=ct;
	if(tims==al-1) vec.clear();
}
void solve(int n){
	al=n;
	for(int i=1;i<=n;i++) rk[i]=i,vec.push_back(i);
	mt19937 lrher(time(0));
	shuffle(rk+1,rk+1+n,lrher);
	while(vec.size()) mian();
}

詳細信息

Subtask #1:

score: 0
Wrong Answer

Test #1:

score: 0
Wrong Answer
time: 4ms
memory: 4316kb

input:

500
310 77
468 235
218 93
58 406
223 334
159 243
204 48
144 107
492 288
447 165
102 407
340 299
450 126
140 234
209 62
111 204
453 306
4 476
126 358
183 317
360 489
149 158
232 22
326 372
92 383
410 24
199 14
401 480
69 329
192 167
409 152
426 354
435 60
146 404
334 187
208 305
123 55
30 79
469 72
2...

output:

-1
1

result:

wrong answer Wrong Answer (or #queries exceeded).

Subtask #2:

score: 0
Wrong Answer

Test #9:

score: 20
Accepted
time: 41ms
memory: 6056kb

input:

2500
887 818
1296 878
1605 2107
803 2410
1919 1135
860 1160
1364 2414
1375 500
894 2173
2322 2449
211 1732
1821 573
413 1556
1574 1977
709 162
2002 1577
1626 1895
1563 688
2151 2293
661 69
317 1170
2335 1549
1481 1349
1500 779
1593 735
1824 2380
639 2334
1496 2335
1956 1384
2476 1583
1035 163
720 70...

output:

123606
2

result:

ok Accepted. 123606 queries used.

Test #10:

score: 20
Accepted
time: 42ms
memory: 4668kb

input:

2500
1186 1927
2337 1044
1440 973
1563 297
1771 1852
921 834
1121 2156
679 211
1146 2132
1537 825
821 1240
1372 133
77 174
2453 1807
1357 550
1620 2020
2024 528
1666 1812
720 900
1243 2090
1665 1738
445 1306
2039 1721
1370 930
948 2331
521 121
1581 2059
1752 2039
218 785
988 2477
121 2462
578 503
11...

output:

124983
2

result:

ok Accepted. 124983 queries used.

Test #11:

score: 20
Accepted
time: 45ms
memory: 4876kb

input:

2500
778 2243
2254 352
1211 233
607 2369
1908 1499
2053 1966
1790 438
1032 703
898 2
1461 1159
1757 2022
1030 753
1123 2124
2346 528
1604 1207
341 1255
2435 999
526 888
1881 1472
251 618
1381 1303
981 1982
130 809
1623 1399
2229 1011
1836 1243
277 2147
588 1119
1980 1235
19 1795
734 2088
845 1841
89...

output:

125373
2

result:

ok Accepted. 125373 queries used.

Test #12:

score: 0
Wrong Answer
time: 32ms
memory: 4664kb

input:

2500
1883 628
95 1337
203 1367
2078 760
115 2231
786 1486
931 248
2064 1215
336 193
175 1360
844 284
1105 102
2413 1374
2017 399
1321 947
2194 1969
2305 390
2193 1452
48 534
974 1439
2133 1727
2209 216
631 861
2279 1004
241 1797
2298 59
790 186
897 855
460 620
841 1701
1709 1541
403 95
909 1553
975 ...

output:

-1
2

result:

wrong answer Wrong Answer (or #queries exceeded).

Subtask #3:

score: 0
Wrong Answer

Test #17:

score: 70
Accepted
time: 255ms
memory: 5796kb

input:

10000
6139 8917
131 5800
5366 5247
1298 5035
3966 3518
4889 7202
6547 1919
5829 9494
8012 6029
3868 6403
1909 8116
5734 6122
2683 4779
9275 6673
7433 9042
7646 2032
3547 6306
1943 8382
4061 6428
8240 3548
460 2795
3451 4320
5904 6627
8709 7621
8706 3534
748 4873
8101 4261
5359 3304
6254 4687
6492 53...

output:

593132
3

result:

ok Accepted. 593132 queries used.

Test #18:

score: 0
Wrong Answer
time: 274ms
memory: 5772kb

input:

10000
2681 8564
3271 4429
6658 3180
2428 7273
8907 2727
5939 1929
2539 1768
7178 7722
3420 8555
1346 811
3608 2345
6181 6871
5539 8722
4731 8049
8581 7954
3979 384
9678 3503
7073 6690
240 7950
16 7004
1591 8818
5422 3777
3382 852
1805 6181
1965 2752
6507 7858
9373 4985
6912 2901
9954 4194
1029 7631
...

output:

-1
3

result:

wrong answer Wrong Answer (or #queries exceeded).