Submission #1200293

#TimeUsernameProblemLanguageResultExecution timeMemory
1200293MinaRagy06Finding Routers (IOI20_routers)C++20
96.64 / 100
1 ms328 KiB
#include <bits/stdc++.h>
#ifdef MINA
#include "grader.cpp"
#endif
#include "routers.h"
using namespace std;
#define ll long long
#define SZ(x) (int) x.size()

vector<int> find_routers(int len, int n, int q) {
	array<int, 2> mn = {int(1e9), -1};
	for (int b = 1; b <= len; b++) {
		mn = min(mn, (array<int, 2>) {n * (__lg(b) + 2) + len / b, b});
	}
	int b = mn[1];
	vector<int> p = {0};
	for (int st = 1; st <= len && SZ(p) < n; st += b) {
		int en = min(st + b - 1, len);
		if (en < p.back() + 1) continue;
		while (SZ(p) < n && (en == len || use_detector(en) >= SZ(p))) {
			int l = p.back() + 1, r = en;
			while (l <= r) {
				int md = ((l + r) >> 1);
				if (use_detector(md) >= SZ(p)) {
					r = md - 1;
				} else {
					l = md + 1;
				}
			}
			l--;
			p.push_back(l + l - p.back());	
		}
	}
	return p;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...