답안 #523280

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
523280 2022-02-07T10:16:06 Z valerikk Minerals (JOI19_minerals) C++17
0 / 100
1 ms 328 KB
#include "minerals.h"

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

using namespace std;

void Solve(int N) {
	int diff = 0;
	vector<int> a, b;
	int lst = 0;
	for (int i = 1; i <= 2 * N; ++i) {
		int x = Query(i);
		if (x != lst) {
			lst = x;
			a.push_back(i);
		} else {
			Query(i);
			b.push_back(i);
		}
	}
	for (int i : a) {
		lst = Query(i);
	}

	vector<int> l(N, 0), r(N, N);
	for (int it = 0; it < 16; ++it) {
		vector<int> m(N);
		bool ok = true;
		for (int i = 0; i < N; ++i) {
			if (r[i] - l[i] != 1) {
				m[i] = (l[i] + r[i]) / 2;
				ok = false;
			}
		}
		if (ok) break;

		vector<vector<int>> here(N + 1);
		for (int i = 0; i < N; ++i) {
			here[m[i]].push_back(i);
		}

		if (it & 1) {
			for (int i = N; i >= 0; --i) {
				for (int j : here[i]) {
					int x = Query(b[j]);
					if (x == lst) {
						r[j] = m[j];
					} else {
						l[j] = m[j];
					}
					lst = x;
				}
				if (i != 0) lst = Query(a[i - 1]);
			}
		} else {
			for (int i = 0; i <= N; ++i) {
				for (int j : here[i]) {
					int x = Query(b[j]);
					if (x == lst) {
						r[j] = m[j];
					} else {
						l[j] = m[j];
					}
					lst = x;
				}
				if (i != N) lst = Query(a[i]);
			}
		}
	}

	for (int i = 0; i < N; ++i) {
		Answer(a[l[i]], b[i]);
	}
}

Compilation message

minerals.cpp: In function 'void Solve(int)':
minerals.cpp:11:6: warning: unused variable 'diff' [-Wunused-variable]
   11 |  int diff = 0;
      |      ^~~~
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 200 KB Wrong Answer [4]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 328 KB Wrong Answer [5]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 200 KB Wrong Answer [4]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 200 KB Wrong Answer [4]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 200 KB Wrong Answer [4]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 200 KB Wrong Answer [4]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 200 KB Wrong Answer [4]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 200 KB Wrong Answer [4]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 200 KB Wrong Answer [4]
2 Halted 0 ms 0 KB -