Submission #901538

# Submission time Handle Problem Language Result Execution time Memory
901538 2024-01-09T14:13:51 Z Darren0724 Minerals (JOI19_minerals) C++17
80 / 100
46 ms 4508 KB
#include "minerals.h"
#include <bits/stdc++.h>
//#include "grader.cpp"
using namespace std;

mt19937 rnd(time(0));
int last=0;
vector<int> have(100000);
int ask(int k){
	have[k] ^= 1;
	int p = Query(k);
	int tmp = p - last;
	last = p;
	return tmp; 
}
void dc(vector<int> &a,vector<int> &b){
	int n=a.size();
	if(n==1){
		Answer(a[0],b[0]);
		return;
	}
	int m=max(1,n*2/5);
	int sz1=0,sz2=0;
	vector<int> a1,a2,b1,b2,tmp1,tmp2;
	for(int i=0;i<n;i++){
		if(have[a[i]]){
			sz1++;
		}
		if(have[b[i]]){
			sz2++;
		}
	}
	if(abs(m-sz2)<abs(m-sz1)){
		swap(a,b);
		swap(tmp1,tmp2);
		swap(sz1,sz2);
	}
	for(int i=0;i<n;i++){
		if(have[a[i]]){
			tmp1.push_back(a[i]);
		}
		else{
			tmp2.push_back(a[i]);
		}
	}
	if(sz1>m){
		int t=abs(m-sz1);
		for(int i=0;i<t;i++){
			ask(tmp1[i]);
		}
	}	
	else{
		int t=abs(m-sz1);
		for(int i=0;i<t;i++){
			ask(tmp2[i]);
		}
	}
	for(int i=0;i<n;i++){
		if(have[a[i]]){
			a1.push_back(a[i]);
		}
		else{
			a2.push_back(a[i]);
		}	
	}
	for(int i=0;i<n;i++){
		if(ask(b[i])==0){
			b1.push_back(b[i]);
		}
		else{
			b2.push_back(b[i]);
		}
	}
	dc(a1,b1);
	dc(a2,b2);
}
void Solve(int n) {
	vector<int> a,b;
	vector<int> t(n*2);
	iota(t.begin(),t.end(),1);
	shuffle(t.begin(),t.end(),rnd);
	for(int j=0;j<n*2;j++){
		int i=t[j];
		if(ask(i)==0){
			b.push_back(i);
		}
		else{
			a.push_back(i);
		}
	}
	dc(a,b);
}
/*
times: N*2 + N log N * 3/2
*/
# Verdict Execution time Memory Grader output
1 Correct 0 ms 856 KB Output is correct
2 Correct 0 ms 640 KB Output is correct
3 Correct 1 ms 856 KB Output is correct
4 Correct 0 ms 856 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 856 KB Output is correct
2 Correct 2 ms 856 KB Output is correct
3 Correct 3 ms 1112 KB Output is correct
4 Correct 7 ms 1368 KB Output is correct
5 Correct 13 ms 2220 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 856 KB Output is correct
2 Correct 0 ms 640 KB Output is correct
3 Correct 1 ms 856 KB Output is correct
4 Correct 0 ms 856 KB Output is correct
5 Correct 1 ms 856 KB Output is correct
6 Correct 2 ms 856 KB Output is correct
7 Correct 3 ms 1112 KB Output is correct
8 Correct 7 ms 1368 KB Output is correct
9 Correct 13 ms 2220 KB Output is correct
10 Correct 1 ms 856 KB Output is correct
11 Correct 9 ms 1624 KB Output is correct
12 Correct 13 ms 2136 KB Output is correct
13 Correct 13 ms 2196 KB Output is correct
14 Correct 16 ms 2256 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 856 KB Output is correct
2 Correct 0 ms 640 KB Output is correct
3 Correct 1 ms 856 KB Output is correct
4 Correct 0 ms 856 KB Output is correct
5 Correct 1 ms 856 KB Output is correct
6 Correct 2 ms 856 KB Output is correct
7 Correct 3 ms 1112 KB Output is correct
8 Correct 7 ms 1368 KB Output is correct
9 Correct 13 ms 2220 KB Output is correct
10 Correct 1 ms 856 KB Output is correct
11 Correct 9 ms 1624 KB Output is correct
12 Correct 13 ms 2136 KB Output is correct
13 Correct 13 ms 2196 KB Output is correct
14 Correct 16 ms 2256 KB Output is correct
15 Correct 36 ms 3796 KB Output is correct
16 Correct 36 ms 3796 KB Output is correct
17 Correct 34 ms 3804 KB Output is correct
18 Correct 34 ms 4508 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 856 KB Output is correct
2 Correct 0 ms 640 KB Output is correct
3 Correct 1 ms 856 KB Output is correct
4 Correct 0 ms 856 KB Output is correct
5 Correct 1 ms 856 KB Output is correct
6 Correct 2 ms 856 KB Output is correct
7 Correct 3 ms 1112 KB Output is correct
8 Correct 7 ms 1368 KB Output is correct
9 Correct 13 ms 2220 KB Output is correct
10 Correct 1 ms 856 KB Output is correct
11 Correct 9 ms 1624 KB Output is correct
12 Correct 13 ms 2136 KB Output is correct
13 Correct 13 ms 2196 KB Output is correct
14 Correct 16 ms 2256 KB Output is correct
15 Correct 36 ms 3796 KB Output is correct
16 Correct 36 ms 3796 KB Output is correct
17 Correct 34 ms 3804 KB Output is correct
18 Correct 34 ms 4508 KB Output is correct
19 Correct 36 ms 4032 KB Output is correct
20 Correct 39 ms 3924 KB Output is correct
21 Correct 35 ms 4304 KB Output is correct
22 Correct 35 ms 4120 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 856 KB Output is correct
2 Correct 0 ms 640 KB Output is correct
3 Correct 1 ms 856 KB Output is correct
4 Correct 0 ms 856 KB Output is correct
5 Correct 1 ms 856 KB Output is correct
6 Correct 2 ms 856 KB Output is correct
7 Correct 3 ms 1112 KB Output is correct
8 Correct 7 ms 1368 KB Output is correct
9 Correct 13 ms 2220 KB Output is correct
10 Correct 1 ms 856 KB Output is correct
11 Correct 9 ms 1624 KB Output is correct
12 Correct 13 ms 2136 KB Output is correct
13 Correct 13 ms 2196 KB Output is correct
14 Correct 16 ms 2256 KB Output is correct
15 Correct 36 ms 3796 KB Output is correct
16 Correct 36 ms 3796 KB Output is correct
17 Correct 34 ms 3804 KB Output is correct
18 Correct 34 ms 4508 KB Output is correct
19 Correct 36 ms 4032 KB Output is correct
20 Correct 39 ms 3924 KB Output is correct
21 Correct 35 ms 4304 KB Output is correct
22 Correct 35 ms 4120 KB Output is correct
23 Correct 37 ms 4432 KB Output is correct
24 Correct 38 ms 3960 KB Output is correct
25 Correct 46 ms 4436 KB Output is correct
26 Correct 41 ms 4372 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 856 KB Output is correct
2 Correct 0 ms 640 KB Output is correct
3 Correct 1 ms 856 KB Output is correct
4 Correct 0 ms 856 KB Output is correct
5 Correct 1 ms 856 KB Output is correct
6 Correct 2 ms 856 KB Output is correct
7 Correct 3 ms 1112 KB Output is correct
8 Correct 7 ms 1368 KB Output is correct
9 Correct 13 ms 2220 KB Output is correct
10 Correct 1 ms 856 KB Output is correct
11 Correct 9 ms 1624 KB Output is correct
12 Correct 13 ms 2136 KB Output is correct
13 Correct 13 ms 2196 KB Output is correct
14 Correct 16 ms 2256 KB Output is correct
15 Correct 36 ms 3796 KB Output is correct
16 Correct 36 ms 3796 KB Output is correct
17 Correct 34 ms 3804 KB Output is correct
18 Correct 34 ms 4508 KB Output is correct
19 Correct 36 ms 4032 KB Output is correct
20 Correct 39 ms 3924 KB Output is correct
21 Correct 35 ms 4304 KB Output is correct
22 Correct 35 ms 4120 KB Output is correct
23 Correct 37 ms 4432 KB Output is correct
24 Correct 38 ms 3960 KB Output is correct
25 Correct 46 ms 4436 KB Output is correct
26 Correct 41 ms 4372 KB Output is correct
27 Incorrect 44 ms 4236 KB Wrong Answer [2]
28 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 856 KB Output is correct
2 Correct 0 ms 640 KB Output is correct
3 Correct 1 ms 856 KB Output is correct
4 Correct 0 ms 856 KB Output is correct
5 Correct 1 ms 856 KB Output is correct
6 Correct 2 ms 856 KB Output is correct
7 Correct 3 ms 1112 KB Output is correct
8 Correct 7 ms 1368 KB Output is correct
9 Correct 13 ms 2220 KB Output is correct
10 Correct 1 ms 856 KB Output is correct
11 Correct 9 ms 1624 KB Output is correct
12 Correct 13 ms 2136 KB Output is correct
13 Correct 13 ms 2196 KB Output is correct
14 Correct 16 ms 2256 KB Output is correct
15 Correct 36 ms 3796 KB Output is correct
16 Correct 36 ms 3796 KB Output is correct
17 Correct 34 ms 3804 KB Output is correct
18 Correct 34 ms 4508 KB Output is correct
19 Correct 36 ms 4032 KB Output is correct
20 Correct 39 ms 3924 KB Output is correct
21 Correct 35 ms 4304 KB Output is correct
22 Correct 35 ms 4120 KB Output is correct
23 Correct 37 ms 4432 KB Output is correct
24 Correct 38 ms 3960 KB Output is correct
25 Correct 46 ms 4436 KB Output is correct
26 Correct 41 ms 4372 KB Output is correct
27 Incorrect 44 ms 4236 KB Wrong Answer [2]
28 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 856 KB Output is correct
2 Correct 0 ms 640 KB Output is correct
3 Correct 1 ms 856 KB Output is correct
4 Correct 0 ms 856 KB Output is correct
5 Correct 1 ms 856 KB Output is correct
6 Correct 2 ms 856 KB Output is correct
7 Correct 3 ms 1112 KB Output is correct
8 Correct 7 ms 1368 KB Output is correct
9 Correct 13 ms 2220 KB Output is correct
10 Correct 1 ms 856 KB Output is correct
11 Correct 9 ms 1624 KB Output is correct
12 Correct 13 ms 2136 KB Output is correct
13 Correct 13 ms 2196 KB Output is correct
14 Correct 16 ms 2256 KB Output is correct
15 Correct 36 ms 3796 KB Output is correct
16 Correct 36 ms 3796 KB Output is correct
17 Correct 34 ms 3804 KB Output is correct
18 Correct 34 ms 4508 KB Output is correct
19 Correct 36 ms 4032 KB Output is correct
20 Correct 39 ms 3924 KB Output is correct
21 Correct 35 ms 4304 KB Output is correct
22 Correct 35 ms 4120 KB Output is correct
23 Correct 37 ms 4432 KB Output is correct
24 Correct 38 ms 3960 KB Output is correct
25 Correct 46 ms 4436 KB Output is correct
26 Correct 41 ms 4372 KB Output is correct
27 Incorrect 44 ms 4236 KB Wrong Answer [2]
28 Halted 0 ms 0 KB -