# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
825275 | TheSahib | Dungeons Game (IOI21_dungeons) | C++17 | 231 ms | 317584 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "dungeons.h"
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define pii pair<int, ll>
const int MAX = 4e5 + 5;
const int LOGMAX = 30;
const int oo = 1e9 + 9;
int n;
struct G{
pii par[LOGMAX + 1][MAX];
void preCalc(){
for (int j = 1; j <= LOGMAX; j++)
{
for (int i = 0; i <= n; i++)
{
int m = par[j - 1][i].first;
if(m == -1){
par[j][i] = par[j - 1][i];
continue;
}
if(par[j - 1][m].first == -1){
par[j][i] = par[j - 1][m];
continue;
}
par[j][i].first = par[j - 1][m].first;
par[j][i].second = par[j - 1][i].second + par[j - 1][m].second;
}
}
}
pii lift(ll start, ll target, int v){
if(start >= target || v == -1) return {v, start};
for(int j = LOGMAX; j >= 0; --j){
ll a = start + par[j][v].second;
if(a < target && par[j][v].first != -1){
start = a;
v = par[j][v].first;
}
}
return {par[0][v].first, par[0][v].second + start};
}
};
vector<ll> v;
G gs[10];
void init(int N, vector<int> s, vector<int> p, vector<int> w, vector<int> l) {
n = N;
set<int> st;
for (int i = 0; i < n; i++)
{
st.insert(s[i]);
}
st.insert(-1);
for(auto& p:st){
v.push_back(p);
}
for (int i = 0; i < v.size(); i++)
{
for(int j = 0; j <= N; ++j){
if(j == N){
gs[i].par[0][j] = {-1, 0};
continue;
}
if(s[j] > v[i]){
gs[i].par[0][j] = {l[j], p[j]};
}
else{
gs[i].par[0][j] = {w[j], s[j]};
}
}
gs[i].preCalc();
}
v.push_back(1ll * oo * oo);
return;
}
ll simulate(int x, int z) {
ll u = x;
ll s = z;
for (int i = 0; i < v.size() - 1; i++)
{
pii p = gs[i].lift(s, v[i + 1], u);
u = p.first;
s = p.second;
}
return s;
}
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... |