# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1199382 | raphaelp | Circus (Balkan15_CIRCUS) | C++20 | 39 ms | 4540 KiB |
#include <bits/stdc++.h>
#include "circus.h"
using namespace std;
set<pair<int, int>> S;
void init(int N, int M, int P[])
{
vector<int> P2;
for (int i = 0; i < N; i++)
P2.push_back(P[i]);
sort(P2.begin(), P2.end());
S.insert({M, M});
for (int i = N - 1; i >= 0; i--)
{
auto x = S.lower_bound({P2[i], 0});
int d = x->second - P2[i];
auto y = S.lower_bound({P2[i] - d, 0});
if (y->second > P2[i] && P2[i] - d >= 0)
S.insert({P2[i] - d, P2[i]});
y = S.lower_bound({P2[i] - d, P2[i]});
if (y == S.begin())
continue;
y--;
while (y->second >= P2[i])
{
int done = 0;
auto temp = y;
if (y == S.begin())
done = 1;
else
y--;
S.erase(temp);
if (done)
break;
}
}
}
int minLength(int D)
{
auto ans = S.lower_bound({D, 0});
return ans->second - D;
}
/*int main()
{
int N, M, Q;
cin >> N >> M >> Q;
int Tab[N];
for (int i = 0; i < N; i++)
cin >> Tab[i];
init(N, M, Tab);
for (int i = 0; i < Q; i++)
{
int x;
cin >> x;
cout << minLength(x) << '\n';
}
}*/
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... |