# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1254346 | pramad712 | Circus (Balkan15_CIRCUS) | C++20 | 54 ms | 1644 KiB |
#include "circus.h"
#include <bits/stdc++.h>
using namespace std;
vector<int> positions;
vector<int> minimals;
int binary_search(int placement) {
int minimal = 0, maximal = 1000000000;
while (minimal < maximal) {
int middle = (minimal + maximal) / 2;
int end = placement + middle;
int index = upper_bound(positions.begin(), positions.end(), end) - positions.begin() - 1;
int height = positions[index] - placement;
if (height >= minimals[index]) {
maximal = middle;
}
else {
minimal = middle + 1;
}
}
return minimal;
}
void init(int N, int M, int P[]){
sort(P, P + N, greater<>());
positions.push_back(M);
minimals.push_back(0);
for (int index = 0; index < N; index++) {
int position = P[index];
minimals.push_back(binary_search(position));
positions.push_back(position);
}
minimals.push_back(binary_search(0));
positions.push_back(0);
reverse(minimals.begin(), minimals.end());
reverse(positions.begin(), positions.end());
}
int minLength(int placement) {
return binary_search(placement);
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |