답안 #149684

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
149684 2019-09-01T06:57:59 Z Ian and 2-bit memory(#3648, percywtc, nhho, ulna) 로카히아 유적 (FXCUP4_lokahia) C++17
0 / 100
17 ms 640 KB
#include <bits/stdc++.h>

using namespace std;

#include "lokahia.h"

int FindBase(int N){
	if (N == 1)
		return 0;
	srand(123);
	int left = 400 - N;
	vector<int> v(N, 1);
	map<pair<int, int>, int> m;
	int cnt = 0;
	while (left) {
		int hv = 0;
		for (int i = 0; i < N; i++)
			if (v[i])
				hv += max(20, v[i]);
		int ta = rand() % hv;
		for (int i = 0; i < N; i++) {
			if (!v[i])
				continue;
			if (ta < max(20, v[i])) {
				ta = i;
				hv -= max(20, v[i]);
				break;
			} else
				ta -= max(20, v[i]);
		}
		if (!hv)
			break;
		int tb = rand() % hv;
		for (int i = 0; i < N; i++) {
			if (!v[i] || i == ta)
				continue;
			if (tb < max(20, v[i])) {
				tb = i;
				break;
		} else
				tb -= max(20, v[i]);
		}
		if (ta > tb)
			swap(ta, tb);
		int tc;
		if (m.count({ta, tb})) {
			tc = m[{ta, tb}];
			cnt++;
			if (cnt == 200) {
				cnt = 0;
				left--;
			}
		} else {
			m[{ta, tb}] = tc = CollectRelics(ta, tb);
			left--;
			cnt = 0;
		}
		if (tc != -1) {
			if (tc != ta) {
				v[tc] += v[ta];
				v[ta] = 0;
			}
			if (tc != tb) {
				v[tc] += v[tb];
				v[tb] = 0;
			}
		}
	}
	int ans = -1, ma = -1;
	for (int i = 0; i < N; i++)
		if (v[i] >= ma) {
			ma = v[i];
			ans = i;
		}
	if (ans == -1)
		return ans;
	ma = 1;
	for (int i = 0; i < N; i++)
		if (i != ans) {
			int ta = CollectRelics(i, ans);
			if (ta == -1)
				continue;
			ma++;
			ans = ta;
		}
	if (ma > N / 2)
		return ans;
	return -1;
}
# 결과 실행 시간 메모리 Grader output
1 Partially correct 6 ms 640 KB Partially correct : C = 399
2 Partially correct 8 ms 640 KB Partially correct : C = 372
3 Partially correct 6 ms 512 KB Partially correct : C = 399
4 Partially correct 6 ms 640 KB Partially correct : C = 399
5 Partially correct 6 ms 640 KB Partially correct : C = 399
6 Partially correct 6 ms 640 KB Partially correct : C = 399
7 Partially correct 7 ms 640 KB Partially correct : C = 399
8 Partially correct 7 ms 640 KB Partially correct : C = 309
9 Partially correct 6 ms 640 KB Partially correct : C = 399
10 Partially correct 7 ms 640 KB Partially correct : C = 309
11 Correct 6 ms 512 KB Correct : C = 184
12 Incorrect 6 ms 640 KB Wrong
13 Partially correct 6 ms 512 KB Partially correct : C = 399
14 Correct 6 ms 512 KB Correct : C = 185
15 Correct 5 ms 512 KB Correct : C = 7
16 Correct 17 ms 512 KB Correct : C = 222
17 Correct 6 ms 512 KB Correct : C = 0
18 Partially correct 7 ms 640 KB Partially correct : C = 399
19 Partially correct 7 ms 640 KB Partially correct : C = 399
20 Partially correct 7 ms 640 KB Partially correct : C = 399
21 Partially correct 6 ms 640 KB Partially correct : C = 399
22 Partially correct 6 ms 640 KB Partially correct : C = 399
23 Partially correct 7 ms 640 KB Partially correct : C = 399
24 Partially correct 7 ms 640 KB Partially correct : C = 399
25 Partially correct 7 ms 640 KB Partially correct : C = 399
26 Partially correct 7 ms 640 KB Partially correct : C = 390
27 Partially correct 6 ms 640 KB Partially correct : C = 399