답안 #867534

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
867534 2023-10-28T15:32:14 Z pizzamoeger popa (BOI18_popa) C++14
0 / 100
1 ms 344 KB
#include <bits/stdc++.h>
#include "popa.h"
#define ll long long

using namespace std;

int quuu(int a, int b, int c, int d, int N) {
  assert(a >= 0 && a < N);
  assert(b >= 0 && b < N);
  assert(c >= 0 && c < N);
  assert(d >= 0 && d < N);
  return query(a, b, c, d);
}

int solve(int N, int* Left, int* Right) {
	vector<int> parent (N, -1);
	
	for (int i = 0; i < N; i++) {
		Left[i] = -1;
		Right[i] = -1;
	}

	int rl = 0;
	for (int i = 1; i < N; i++) {
		int v = rl;
		while(parent[v] != -1 && quuu(i, i, i, v, N)) {
			v = parent[v];
		}

		if (parent[v] == -1) {
			if (quuu(i, i, i, v, N)) {
				parent[v] = i;
				Left[i] = v;
				rl = i;
			} else {
				parent[i] = v;
				Left[i] = Right[v];
				Right[v] = i;
				rl = i;
			}
		} else {
			parent[i] = v;
			Left[i] = Right[v];
			Right[v] = i;
			rl = i;
		}
	}

	int root = rl;
	while (parent[root] != -1) root = parent[root];
	return root;
}

/*signed main() {
	const int N = 6;
	int* Left = new int[N];
	int* Right = new int[N];
	int ret = solve(N, Left, Right);
	cerr << ret;

	for (int i = 0; i < N; i++) {
		cout << Left[i] << " " << Right[i] << "\n";
	}

	return 0;
}*/
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 344 KB invalid argument
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 344 KB invalid argument
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 344 KB invalid argument
2 Halted 0 ms 0 KB -