제출 #1132955

#제출 시각아이디문제언어결과실행 시간메모리
1132955Szymon_PilipczukDungeons Game (IOI21_dungeons)C++20
0 / 100
2 ms4168 KiB
#include <bits/stdc++.h>
#include "dungeons.h"
using namespace std;
long long j[6][25][400001][2];
int n;
int s[400000];
int p[400000];
int w[400000];
int l[400000];
vector<long long> t;
set<int> e;
void init(int nt,vector<int> st,vector<int> pt,vector<int> wt,vector<int> lt)
{
    n = nt;
    for(int i =0 ;i<n;i++)
    {
        s[i] = st[i];
        p[i] = pt[i];
        w[i] = wt[i];
        l[i] = lt[i];
    }
    e.insert(0);
    for(int i = 0;i<n;i++)
    {
        e.insert(s[i]);
    }
    for(auto i = e.begin();i != e.end();i++)
    {
        t.push_back(*i);
    }
    for(int i = 0;i<t.size();i++)
    {
        for(int q = 0;q<n;q++)
        {
            if(s[q] <= t[i])
            {
                j[i][0][q][0] = w[q];
                j[i][0][q][1] = s[q];
            }
            else
            {
                j[i][0][q][0] = l[q];
                j[i][0][q][1] = p[q];
            }
        }
        j[i][0][n][0] = n;
        j[i][0][n][1] = 0;
        for(int w = 1;w<25;w++)
        {
            for(int q = 0;q<=n;q++)
            {
                j[i][w][q][0] = j[i][w-1][j[i][w-1][q][0]][0];
                j[i][w][q][1] = j[i][w-1][q][1] + j[i][w-1][j[i][w-1][q][0]][1];
            }
        }
    }
    t.push_back(1e18);
}
long long simulate(int x,int zt)
{
    long long z = zt;
    for(int i = 0;i<t.size()-1;i++)
    {
        for(int w = 24;w>=0;w--)
        {
            if(j[i][w][x][1]+z < t[i+1])
            {
                z+=j[i][w][x][1];
                x = j[i][w][x][0];
            }
        }
        z+=j[i][0][x][1];
        x = j[i][0][x][0];
    }
    return z;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...