Submission #1203504

#TimeUsernameProblemLanguageResultExecution timeMemory
1203504mayacFinding Routers (IOI20_routers)C++20
97.11 / 100
1 ms328 KiB
#include "routers.h"
#include <iostream>
#include <vector>
using namespace std;

std::vector<int> find_routers(int l, int n, int q) {
	int idx = l, a, cur;
	vector<int> ans(n, 0),mn(n,0), mx(n,l);
	for (int i = n - 1; i > 0; i--) {
		while (mx[i] < mn[i])
			idx++;
		cur = mn[i];
		for (int step = (mx[i]-mn[i]+1)/2; step > 0; step /= 2) {
			cur += step;
			while (cur > l)cur--;
			a = use_detector(cur);
			mx[a] = min(cur,mx[a]);
			if (a < n - 1)mn[a + 1] = max(mn[a + 1], cur);
			if (a >= i)cur -= step;
			if (step > 1)step++;
		}
		idx = cur;
		ans[i] = cur;
	}
	for (int i = 1; i < n; i++) {
		ans[i] = ans[i] * 2 - ans[i - 1];
	}
	return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...