Submission #496954

# Submission time Handle Problem Language Result Execution time Memory
496954 2021-12-22T07:33:32 Z Temmie Rail (IOI14_rail) C++17
100 / 100
85 ms 8272 KB
#include "rail.h"
#include <bits/stdc++.h>

void findLocation(int n, int first, int location[], int stype[]) {
	location[0] = first, stype[0] = 1;
	if (n == 1) {
		return;
	}
	std::vector <int> inv(int(2e6) + 3, -1);
	inv[first] = 0;
	std::vector <std::pair <int, int>> a(n - 1);
	for (int i = 1; i < n; i++) {
		a[i - 1] = { getDistance(0, i), i };
	}
	std::sort(a.rbegin(), a.rend());
	int l = 0, r = a.back().second;
	location[r] = first + a.back().first;
	stype[r] = 2;
	inv[location[r]] = r;
	a.pop_back();
	while (a.size()) {
		int ind = a.back().second;
		a.pop_back();
		int left = getDistance(l, ind);
		int right = getDistance(r, ind);
		int loc1 = location[l] + left;
		int loc2 = location[r] - right;
		int mid = (loc1 + loc2) >> 1;
		if (inv[mid] == -1) {
			stype[ind] = first < mid ? 2 : 1;
		} else {
			stype[ind] = stype[inv[mid]] == 1 ? 2 : 1;
		}
		location[ind] = stype[ind] == 1 ? loc2 : loc1;
		inv[location[ind]] = ind;
		if (location[ind] > location[r]) {
			r = ind;
		} else if (location[ind] < location[l]) {
			l = ind;
		}
	}
}
# Verdict Execution time Memory Grader output
1 Correct 4 ms 8140 KB Output is correct
2 Correct 3 ms 8140 KB Output is correct
3 Correct 3 ms 8140 KB Output is correct
4 Correct 3 ms 8140 KB Output is correct
5 Correct 3 ms 8140 KB Output is correct
6 Correct 3 ms 8140 KB Output is correct
7 Correct 3 ms 8140 KB Output is correct
8 Correct 3 ms 8140 KB Output is correct
9 Correct 4 ms 8140 KB Output is correct
10 Correct 3 ms 8140 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 3 ms 8140 KB Output is correct
2 Correct 3 ms 8140 KB Output is correct
3 Correct 3 ms 8140 KB Output is correct
4 Correct 3 ms 8140 KB Output is correct
5 Correct 4 ms 8140 KB Output is correct
6 Correct 3 ms 8140 KB Output is correct
7 Correct 3 ms 8140 KB Output is correct
8 Correct 5 ms 8140 KB Output is correct
9 Correct 4 ms 8140 KB Output is correct
10 Correct 5 ms 8140 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 67 ms 8256 KB Output is correct
2 Correct 69 ms 8256 KB Output is correct
3 Correct 76 ms 8264 KB Output is correct
4 Correct 73 ms 8256 KB Output is correct
5 Correct 69 ms 8260 KB Output is correct
6 Correct 73 ms 8268 KB Output is correct
7 Correct 70 ms 8268 KB Output is correct
8 Correct 72 ms 8260 KB Output is correct
9 Correct 71 ms 8256 KB Output is correct
10 Correct 78 ms 8272 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 78 ms 8256 KB Output is correct
2 Correct 71 ms 8256 KB Output is correct
3 Correct 67 ms 8264 KB Output is correct
4 Correct 70 ms 8264 KB Output is correct
5 Correct 75 ms 8256 KB Output is correct
6 Correct 68 ms 8256 KB Output is correct
7 Correct 76 ms 8264 KB Output is correct
8 Correct 79 ms 8256 KB Output is correct
9 Correct 84 ms 8252 KB Output is correct
10 Correct 85 ms 8252 KB Output is correct
11 Correct 69 ms 8256 KB Output is correct
12 Correct 69 ms 8232 KB Output is correct
13 Correct 76 ms 8256 KB Output is correct
14 Correct 80 ms 8256 KB Output is correct
15 Correct 69 ms 8256 KB Output is correct
16 Correct 70 ms 8256 KB Output is correct
17 Correct 68 ms 8256 KB Output is correct
18 Correct 70 ms 8252 KB Output is correct
19 Correct 78 ms 8268 KB Output is correct
20 Correct 84 ms 8256 KB Output is correct