Submission #1292831

#TimeUsernameProblemLanguageResultExecution timeMemory
1292831ChuanChenStations (IOI20_stations)C++20
8 / 100
1678 ms436 KiB
#include "stations.h"
#include <bits/stdc++.h>
using namespace std;


const int MAXN = 1e3+3;

vector<int> label(int n, int k, vector<int> u, vector<int> v){
	vector<int> labels(n);
	for (int i = 0; i < n; i++) {
		labels[i] = i;
 	}
	return labels;
}

vector<int> getChild(int id){
	vector<int> ans, l, r;
	ans.push_back(id);
	if(2*id < 999){
		l = getChild(2*id+1);
	}
	if(2*id < 998){
		r = getChild(2*id+2);
	}
	
	for(int x : l) ans.push_back(x);
	for(int x : r) ans.push_back(x);
	l.clear();
	r.clear();
	
	return ans;
}

int find_next_station(int s, int t, vector<int> c){
	//menor que eu --> eh meu pai
	int pai = 0;
	vector<int> fis[2];
	int id = 0;
	for(int i : c){
		if(i < s) pai = i;
		else{
			fis[id] = getChild(i);
			sort(fis[id].begin(), fis[id].end()); 
			int k = lower_bound(fis[id].begin(), fis[id].end(), t) - fis[id].begin();
			if(k < fis[id].size() && fis[id][k] == t) return i;
			id++;
		}
	}
	return pai;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...