Submission #227615

# Submission time Handle Problem Language Result Execution time Memory
227615 2020-04-28T06:35:36 Z _7_7_ Minerals (JOI19_minerals) C++14
100 / 100
111 ms 4480 KB
#include "minerals.h"
#include <bits/stdc++.h>                                           
 
//#define int long long
//#pragma GCC optimize("Ofast")
//#pragma comment(linker, "/stack:200000000")
//#pragma GCC target("sse,sse2,sse3,ssse3,sse4")
 
 
#define file(s) freopen(s".in","r",stdin); freopen(s".out","w",stdout);
#define forev(i, b, a) for(int i = (b); i >= (a); --i)
#define forn(i, a, b) for(int i = (a); i <= (b); ++i)
#define all(x) x.begin(), x.end()
#define sz(s) (int)s.size()
#define pb push_back
#define ppb pop_back
#define mp make_pair
#define s second
#define f first
 
 
using namespace std;
 
 
typedef pair < long long, long long > pll;    
typedef pair < int, int > pii;
typedef unsigned long long ull;
typedef vector < pii > vpii;
typedef vector < int > vi;
typedef long double ldb;  
typedef long long ll;  
typedef double db;                             
 
 
const int inf = 1e9, maxn = 4e5 + 148, mod = 1e9 + 7, N = 5e5 + 11;
const int dx[] = {1, -1, 0, 0}, dy[] = {0, 0, 1, -1}, block = 333;
const pii base = mp(1171, 3307), Mod = mp(1e9 + 7, 1e9 + 9);
const db eps = 1e-12, pi = 3.14159265359;
const ll INF = 1e18;

int prv, prv1;


void query (int x) {
	prv1 = prv;
	prv = Query(x);
}



void calc (vi A, vi B, bool ok) {
	if (sz(A) == 1) {
		Answer(A[0], B[0]);
		return;
	}
	random_shuffle(all(A));
	random_shuffle(all(B));

	int m = 0.33 * sz(A);

	vi Al, Ar, Bl, Br;


	m = max(1, min(m, sz(A) - 1));
	for (int i = 0; i < m; ++i)	 {
		query(A[i]);		
		Al.pb(A[i]);
	}

	for (int i = m; i < sz(A); ++i)
		Ar.pb(A[i]);

	for (auto x : B) {
		if (sz(Al) == sz(Bl)) {
			Br.pb(x);
			continue;
		}
		
		if (sz(Ar) == sz(Br)) {
			Bl.pb(x);
			continue;
		}
		
		query(x);
		if (ok == (prv == prv1))
			Br.pb(x);
		else 
			Bl.pb(x);
	}

		
	calc(Al, Bl, ok ^ 1);
	calc(Ar, Br, ok);
}


void Solve(int n) {
	srand(time(0));
	vi A, B;
	for (int i = 1; i <= n + n; ++i) {
		query(i);
		if (prv != sz(A))
			A.pb(i);
		else
			B.pb(i);			
	}

	calc(A, B, 1);
}
# Verdict Execution time Memory Grader output
1 Correct 4 ms 384 KB Output is correct
2 Correct 4 ms 384 KB Output is correct
3 Correct 5 ms 384 KB Output is correct
4 Correct 5 ms 384 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 6 ms 384 KB Output is correct
2 Correct 8 ms 512 KB Output is correct
3 Correct 13 ms 768 KB Output is correct
4 Correct 20 ms 1024 KB Output is correct
5 Correct 37 ms 1620 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 4 ms 384 KB Output is correct
2 Correct 4 ms 384 KB Output is correct
3 Correct 5 ms 384 KB Output is correct
4 Correct 5 ms 384 KB Output is correct
5 Correct 6 ms 384 KB Output is correct
6 Correct 8 ms 512 KB Output is correct
7 Correct 13 ms 768 KB Output is correct
8 Correct 20 ms 1024 KB Output is correct
9 Correct 37 ms 1620 KB Output is correct
10 Correct 6 ms 512 KB Output is correct
11 Correct 25 ms 1280 KB Output is correct
12 Correct 36 ms 1788 KB Output is correct
13 Correct 38 ms 1800 KB Output is correct
14 Correct 36 ms 1732 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 4 ms 384 KB Output is correct
2 Correct 4 ms 384 KB Output is correct
3 Correct 5 ms 384 KB Output is correct
4 Correct 5 ms 384 KB Output is correct
5 Correct 6 ms 384 KB Output is correct
6 Correct 8 ms 512 KB Output is correct
7 Correct 13 ms 768 KB Output is correct
8 Correct 20 ms 1024 KB Output is correct
9 Correct 37 ms 1620 KB Output is correct
10 Correct 6 ms 512 KB Output is correct
11 Correct 25 ms 1280 KB Output is correct
12 Correct 36 ms 1788 KB Output is correct
13 Correct 38 ms 1800 KB Output is correct
14 Correct 36 ms 1732 KB Output is correct
15 Correct 92 ms 3832 KB Output is correct
16 Correct 91 ms 3864 KB Output is correct
17 Correct 89 ms 3832 KB Output is correct
18 Correct 88 ms 3696 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 4 ms 384 KB Output is correct
2 Correct 4 ms 384 KB Output is correct
3 Correct 5 ms 384 KB Output is correct
4 Correct 5 ms 384 KB Output is correct
5 Correct 6 ms 384 KB Output is correct
6 Correct 8 ms 512 KB Output is correct
7 Correct 13 ms 768 KB Output is correct
8 Correct 20 ms 1024 KB Output is correct
9 Correct 37 ms 1620 KB Output is correct
10 Correct 6 ms 512 KB Output is correct
11 Correct 25 ms 1280 KB Output is correct
12 Correct 36 ms 1788 KB Output is correct
13 Correct 38 ms 1800 KB Output is correct
14 Correct 36 ms 1732 KB Output is correct
15 Correct 92 ms 3832 KB Output is correct
16 Correct 91 ms 3864 KB Output is correct
17 Correct 89 ms 3832 KB Output is correct
18 Correct 88 ms 3696 KB Output is correct
19 Correct 97 ms 3952 KB Output is correct
20 Correct 98 ms 4112 KB Output is correct
21 Correct 100 ms 3952 KB Output is correct
22 Correct 93 ms 3864 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 4 ms 384 KB Output is correct
2 Correct 4 ms 384 KB Output is correct
3 Correct 5 ms 384 KB Output is correct
4 Correct 5 ms 384 KB Output is correct
5 Correct 6 ms 384 KB Output is correct
6 Correct 8 ms 512 KB Output is correct
7 Correct 13 ms 768 KB Output is correct
8 Correct 20 ms 1024 KB Output is correct
9 Correct 37 ms 1620 KB Output is correct
10 Correct 6 ms 512 KB Output is correct
11 Correct 25 ms 1280 KB Output is correct
12 Correct 36 ms 1788 KB Output is correct
13 Correct 38 ms 1800 KB Output is correct
14 Correct 36 ms 1732 KB Output is correct
15 Correct 92 ms 3832 KB Output is correct
16 Correct 91 ms 3864 KB Output is correct
17 Correct 89 ms 3832 KB Output is correct
18 Correct 88 ms 3696 KB Output is correct
19 Correct 97 ms 3952 KB Output is correct
20 Correct 98 ms 4112 KB Output is correct
21 Correct 100 ms 3952 KB Output is correct
22 Correct 93 ms 3864 KB Output is correct
23 Correct 99 ms 3952 KB Output is correct
24 Correct 104 ms 4240 KB Output is correct
25 Correct 111 ms 3912 KB Output is correct
26 Correct 98 ms 3896 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 4 ms 384 KB Output is correct
2 Correct 4 ms 384 KB Output is correct
3 Correct 5 ms 384 KB Output is correct
4 Correct 5 ms 384 KB Output is correct
5 Correct 6 ms 384 KB Output is correct
6 Correct 8 ms 512 KB Output is correct
7 Correct 13 ms 768 KB Output is correct
8 Correct 20 ms 1024 KB Output is correct
9 Correct 37 ms 1620 KB Output is correct
10 Correct 6 ms 512 KB Output is correct
11 Correct 25 ms 1280 KB Output is correct
12 Correct 36 ms 1788 KB Output is correct
13 Correct 38 ms 1800 KB Output is correct
14 Correct 36 ms 1732 KB Output is correct
15 Correct 92 ms 3832 KB Output is correct
16 Correct 91 ms 3864 KB Output is correct
17 Correct 89 ms 3832 KB Output is correct
18 Correct 88 ms 3696 KB Output is correct
19 Correct 97 ms 3952 KB Output is correct
20 Correct 98 ms 4112 KB Output is correct
21 Correct 100 ms 3952 KB Output is correct
22 Correct 93 ms 3864 KB Output is correct
23 Correct 99 ms 3952 KB Output is correct
24 Correct 104 ms 4240 KB Output is correct
25 Correct 111 ms 3912 KB Output is correct
26 Correct 98 ms 3896 KB Output is correct
27 Correct 99 ms 4108 KB Output is correct
28 Correct 105 ms 4328 KB Output is correct
29 Correct 103 ms 4236 KB Output is correct
30 Correct 94 ms 3952 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 4 ms 384 KB Output is correct
2 Correct 4 ms 384 KB Output is correct
3 Correct 5 ms 384 KB Output is correct
4 Correct 5 ms 384 KB Output is correct
5 Correct 6 ms 384 KB Output is correct
6 Correct 8 ms 512 KB Output is correct
7 Correct 13 ms 768 KB Output is correct
8 Correct 20 ms 1024 KB Output is correct
9 Correct 37 ms 1620 KB Output is correct
10 Correct 6 ms 512 KB Output is correct
11 Correct 25 ms 1280 KB Output is correct
12 Correct 36 ms 1788 KB Output is correct
13 Correct 38 ms 1800 KB Output is correct
14 Correct 36 ms 1732 KB Output is correct
15 Correct 92 ms 3832 KB Output is correct
16 Correct 91 ms 3864 KB Output is correct
17 Correct 89 ms 3832 KB Output is correct
18 Correct 88 ms 3696 KB Output is correct
19 Correct 97 ms 3952 KB Output is correct
20 Correct 98 ms 4112 KB Output is correct
21 Correct 100 ms 3952 KB Output is correct
22 Correct 93 ms 3864 KB Output is correct
23 Correct 99 ms 3952 KB Output is correct
24 Correct 104 ms 4240 KB Output is correct
25 Correct 111 ms 3912 KB Output is correct
26 Correct 98 ms 3896 KB Output is correct
27 Correct 99 ms 4108 KB Output is correct
28 Correct 105 ms 4328 KB Output is correct
29 Correct 103 ms 4236 KB Output is correct
30 Correct 94 ms 3952 KB Output is correct
31 Correct 109 ms 4240 KB Output is correct
32 Correct 103 ms 4256 KB Output is correct
33 Correct 107 ms 4244 KB Output is correct
34 Correct 102 ms 4052 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 4 ms 384 KB Output is correct
2 Correct 4 ms 384 KB Output is correct
3 Correct 5 ms 384 KB Output is correct
4 Correct 5 ms 384 KB Output is correct
5 Correct 6 ms 384 KB Output is correct
6 Correct 8 ms 512 KB Output is correct
7 Correct 13 ms 768 KB Output is correct
8 Correct 20 ms 1024 KB Output is correct
9 Correct 37 ms 1620 KB Output is correct
10 Correct 6 ms 512 KB Output is correct
11 Correct 25 ms 1280 KB Output is correct
12 Correct 36 ms 1788 KB Output is correct
13 Correct 38 ms 1800 KB Output is correct
14 Correct 36 ms 1732 KB Output is correct
15 Correct 92 ms 3832 KB Output is correct
16 Correct 91 ms 3864 KB Output is correct
17 Correct 89 ms 3832 KB Output is correct
18 Correct 88 ms 3696 KB Output is correct
19 Correct 97 ms 3952 KB Output is correct
20 Correct 98 ms 4112 KB Output is correct
21 Correct 100 ms 3952 KB Output is correct
22 Correct 93 ms 3864 KB Output is correct
23 Correct 99 ms 3952 KB Output is correct
24 Correct 104 ms 4240 KB Output is correct
25 Correct 111 ms 3912 KB Output is correct
26 Correct 98 ms 3896 KB Output is correct
27 Correct 99 ms 4108 KB Output is correct
28 Correct 105 ms 4328 KB Output is correct
29 Correct 103 ms 4236 KB Output is correct
30 Correct 94 ms 3952 KB Output is correct
31 Correct 109 ms 4240 KB Output is correct
32 Correct 103 ms 4256 KB Output is correct
33 Correct 107 ms 4244 KB Output is correct
34 Correct 102 ms 4052 KB Output is correct
35 Correct 104 ms 4292 KB Output is correct
36 Correct 102 ms 4324 KB Output is correct
37 Correct 109 ms 4480 KB Output is correct
38 Correct 102 ms 4168 KB Output is correct