Submission #1303509

#TimeUsernameProblemLanguageResultExecution timeMemory
1303509SabaKharebava이주 (IOI25_migrations)C++20
0 / 100
28 ms440 KiB
#include<bits/stdc++.h>

using namespace std;

#define pb push_back

stack<int> st;

void to_binary(int num) {
	while (num) {
		if (num&1)
			st.push(1);
		else
			st.push(0);
		num >>= 1;
	}
}

int from_binary(vector<int> v) {
	int num = 0;
	for (int e : v) {
		num <<= 1;
		num += e;
	}
	return num;
}

int depth[10001], mx = 0;

int send_message(int N, int i, int Pi) {
	depth[i] = depth[Pi]+1;
	if (depth[i] > depth[mx]) {
		if(i > N-14)
			return 2;
		mx = i;
	}
	if (i < N-14)
		return 0;
	if (i == N-14) {
		to_binary(mx);
		return 0;
	}
	int tp = st.top();
	st.pop();
	return tp;
}

pair<int, int> longest_path(std::vector<int> S) {
	for (int i = S.size()-1; i >= 1; i--)
		if (S[i] == 2)
			return make_pair(0, i);
	vector<int> v;
	for (int i = S.size()-13; i < S.size(); i++)
		v.pb(S[i]);
	reverse(v.begin(), v.end());
	return make_pair(0, from_binary(v));
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...