제출 #523161

#제출 시각아이디문제언어결과실행 시간메모리
523161valerikkMinerals (JOI19_minerals)C++17
40 / 100
21 ms1724 KiB
#include "minerals.h"

#include <iostream>
#include <vector>
#include <algorithm>
#include <cassert>

using namespace std;

void Solve(int N) {
	vector<int> l, r;
	int kek = 0;
	for (int i = 1; i <= 2 * N; ++i) {
		int cur = Query(i);
		if (kek != cur) {
			l.push_back(i);
			kek = cur;
		} else {
			Query(i);
			r.push_back(i);
		}
	}

	for (int i : l) {
		Query(i);
	}

	vector<int> sum(N);

	for (int bit = 0; (1 << bit) < N; ++bit) {
		for (int i = 0; i < N; ++i) {
			if ((i >> bit) & 1) {
				Query(l[i]);
			}
		}

		for (int i = 0; i < N; ++i) {
			kek = Query(r[i]);
			if (kek == Query(r[i])) {
				sum[i] += (1 << bit);
			}
		}

		for (int i = 0; i < N; ++i) {
			if ((i >> bit) & 1) {
				Query(l[i]);
			}
		}	
	}

	// for (int i = 0; i < N; ++i) {
	// 	cout << l[sum[i]] << " " << r[i] << endl;
	// }

	for (int i = 0; i < N; ++i) {
		Answer(l[sum[i]], r[i]);
	}
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...