# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1187369 | 0x34c | Circus (Balkan15_CIRCUS) | C++20 | 31 ms | 26944 KiB |
#include "circus.h"
#define ll long long
#define pii pair<int, int>
#include <bits/stdc++.h>
using namespace std;
int gN, gM;
const int MAX_N = 1000010, MAX_Q = 1000010;
vector<pair<int, pii>> arr[MAX_N];
int indexik[MAX_N];
pii get_item(int idx, int t)
{
int l = 0, r = arr[idx].size() - 1;
int lb = -1;
while (l <= r)
{
int m = l + (r - l) / 2;
if (arr[idx][m].first >= t)
{
lb = m;
l = m + 1;
}
else
r = m - 1;
}
return arr[idx][lb].second;
}
void update_item(int idx, int t, pii val)
{
arr[idx].push_back({t, val});
}
int dp[MAX_N], iarr[MAX_N];
void init(int N, int M, int P[])
{
gN = N;
gM = M;
for (int i = 0; i < N; i++)
iarr[i] = P[i];
update_item(N, N, {M, M});
dp[N] = 0;
int idx = N;
indexik[N] = idx;
for (int i = N - 1; i >= 0; i--)
{
int l = idx, r = N;
int lb = M;
while (l <= r)
{
int m = l + (r - l) / 2;
pii item = get_item(m, i);
if (P[i] <= item.first)
{
lb = item.second;
r = m - 1;
}
else
l = m + 1;
}
dp[i] = lb - P[i];
while (get_item(idx, i).first <= P[i] - dp[i])
idx++;
--idx;
update_item(idx, i, {P[i] - dp[i], P[i]});
indexik[i] = idx;
}
}
int minLength(int D)
{
int l = 0, r = gN;
int lb = gN;
while (l <= r)
{
int m = l + (r - l) / 2;
if (iarr[m] >= D)
{
lb = m;
r = m - 1;
}
else
l = m + 1;
}
int i = lb;
int idx = indexik[i];
l = idx;
r = gN;
lb = gM;
while (l <= r)
{
int m = l + (r - l) / 2;
pii item = get_item(m, i);
if (D <= item.first)
{
lb = item.second;
r = m - 1;
}
else
l = m + 1;
}
return lb - D;
}
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... |