답안 #761670

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
761670 2023-06-20T07:02:36 Z SanguineChameleon 최후의 만찬 (IOI12_supper) C++17
0 / 100
281 ms 21780 KB
#include "advisor.h"
#include <bits/stdc++.h>
using namespace std;

const int maxN = 1e5 + 20;
vector<int> pos[maxN];

void ComputeAdvice(int *C, int N, int K, int M) {
	int L = 1;
	while ((1 << L) < K) {
		L++;
	}
	for (int i = N - 1; i >= 0; i--) {
		pos[C[i]].push_back(i);
	}
	map<int, int> cur;
	set<pair<int, int>> S;
	for (int i = 0; i < K; i++) {
		S.emplace(pos[i].empty() ? N : 0, i);
		cur[i] = i;
	}
	for (int i = 0; i < N; i++) {
		int x = -1;
		auto it = S.find(make_pair(0, C[i]));
		if (it != S.end()) {
			x = cur[C[i]];
			cur[C[i]] = -1;
			S.erase(it);
		}
		else {
			x = cur[prev(S.end())->second];
			cur[prev(S.end())->second] = -1;
			for (int j = 0; j < L; j++) {
				WriteAdvice((x >> j) & 1);
			}
			S.erase(prev(S.end()));
		}
		cur[C[i]] = x;
		pos[C[i]].pop_back();
		S.emplace(pos[C[i]].empty() ? N : 0, C[i]);
	}
}
#include "assistant.h"
#include <bits/stdc++.h>
using namespace std;

const int maxK = 1e5 + 20;
int colors[maxK];

void Assist(unsigned char *A, int N, int K, int R) {
	int L = 1;
	while ((1 << L) < K) {
		L++;
	}
	set<int> S;
	for (int i = 0; i < K; i++) {
		colors[i] = i;
		S.insert(i);
	}
	int pt = 0;
	for (int i = 0; i < N; i++) {
		int C = GetRequest();
		if (S.find(C) != S.end()) {
			continue;
		}
		int pos = 0;
		for (int j = 0; j < L; j++) {
			pos |= (A[pt + j] << j);
		}
		pt += L;
		PutBack(colors[pos]);
		S.erase(colors[pos]);
		S.insert(C);
		colors[pos] = C;
	}
}
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 2948 KB Output is correct
2 Correct 1 ms 2948 KB Output is correct
3 Correct 3 ms 3072 KB Output is correct
4 Incorrect 4 ms 2980 KB Output isn't correct - not an optimal way
5 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 19 ms 4136 KB Output isn't correct - not an optimal way
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 195 ms 14204 KB Output is correct
2 Correct 250 ms 16964 KB Output is correct
3 Correct 239 ms 17040 KB Output is correct
4 Correct 231 ms 16092 KB Output is correct
5 Incorrect 205 ms 13292 KB Output isn't correct - not an optimal way
6 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 3 ms 3216 KB Error - advice is too long
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 252 ms 16824 KB Output isn't correct - not an optimal way
2 Correct 248 ms 16736 KB Output is partially correct - 742095 bits used
3 Correct 246 ms 16896 KB Output is partially correct - 712470 bits used
4 Correct 244 ms 17188 KB Output is partially correct - 712005 bits used
5 Correct 248 ms 17032 KB Output is partially correct - 710610 bits used
6 Correct 240 ms 16960 KB Output is partially correct - 712155 bits used
7 Correct 240 ms 16948 KB Output is partially correct - 711090 bits used
8 Correct 239 ms 17040 KB Output is partially correct - 713340 bits used
9 Correct 242 ms 17268 KB Output is partially correct - 712830 bits used
10 Correct 281 ms 21780 KB Output is partially correct - 1117620 bits used