Submission #929117

# Submission time Handle Problem Language Result Execution time Memory
929117 2024-02-17T17:54:15 Z abcvuitunggio Dungeons Game (IOI21_dungeons) C++17
100 / 100
3418 ms 1883468 KB
#include "dungeons.h"
#include <bits/stdc++.h>
using namespace std;
const int base=6,sz=9;
const long long INF=1e18;
int N,nxt[24][400001][sz+1];
long long mx[24][400001],mn[24][400001][sz],sum[24][400001][sz+1];
vector <int> S,P,ve={1};
void init(int n, vector <int> s, vector <int> p, vector <int> w, vector <int> l){
    N=n,S=s,P=p;
    for (int i=1;i<sz;i++)
        ve.push_back(ve.back()*base);
    memset(nxt,-1,sizeof(nxt));
    for (int i=0;i<n;i++){
        for (int j=0;j<sz;j++)
            if (s[i]<=ve[j]){
                nxt[0][i][j]=w[i];
                sum[0][i][j]=s[i];
                mn[0][i][j]=INF;
            }
            else{
                nxt[0][i][j]=l[i];
                sum[0][i][j]=p[i];
                mn[0][i][j]=s[i];
            }
        nxt[0][i][sz]=w[i];
        mx[0][i]=sum[0][i][sz]=s[i];
    }
    for (int j=1;j<24;j++){
        for (int i=0;i<n;i++)
            for (int k=0;k<=sz;k++){
                if (nxt[j-1][i][k]==-1)
                    continue;
                int u=nxt[j-1][i][k];
                nxt[j][i][k]=nxt[j-1][u][k];
                if (k<sz)
                    mn[j][i][k]=min(mn[j-1][i][k],mn[j-1][u][k]-sum[j-1][i][k]);
                else
                    mx[j][i]=max(mx[j-1][i],mx[j-1][u]-sum[j-1][i][k]);
                sum[j][i][k]=sum[j-1][i][k]+sum[j-1][u][k];
            }
    }
}
long long simulate(int x, int Z){
    int b=0,cur=0;
    long long z=Z;
    while (x<N){
        while (cur<sz&&ve[cur]<=z)
            cur++;
        int j=(b?cur-1:sz);
        for (int i=23;i>=0;i--)
            if (nxt[i][x][j]!=-1)
                if ((b&&z<mn[i][x][j])||(!b&&z>=mx[i][x])){
                    z+=sum[i][x][j];
                    x=nxt[i][x][j];
                }
        b^=1;
    }
    return z;
}
# Verdict Execution time Memory Grader output
1 Correct 110 ms 477268 KB Output is correct
2 Correct 53 ms 481364 KB Output is correct
3 Correct 57 ms 493932 KB Output is correct
4 Correct 153 ms 666036 KB Output is correct
5 Correct 56 ms 493912 KB Output is correct
6 Correct 128 ms 666232 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 56 ms 491856 KB Output is correct
2 Correct 1091 ms 1879452 KB Output is correct
3 Correct 953 ms 1883104 KB Output is correct
4 Correct 723 ms 1883468 KB Output is correct
5 Correct 806 ms 1840048 KB Output is correct
6 Correct 998 ms 1879312 KB Output is correct
7 Correct 642 ms 1883288 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 58 ms 489812 KB Output is correct
2 Correct 176 ms 666848 KB Output is correct
3 Correct 184 ms 695772 KB Output is correct
4 Correct 150 ms 695536 KB Output is correct
5 Correct 168 ms 695632 KB Output is correct
6 Correct 181 ms 667048 KB Output is correct
7 Correct 177 ms 666900 KB Output is correct
8 Correct 167 ms 695684 KB Output is correct
9 Correct 157 ms 666864 KB Output is correct
10 Correct 153 ms 695776 KB Output is correct
11 Correct 247 ms 599172 KB Output is correct
12 Correct 354 ms 679156 KB Output is correct
13 Correct 243 ms 656720 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 58 ms 489812 KB Output is correct
2 Correct 176 ms 666848 KB Output is correct
3 Correct 184 ms 695772 KB Output is correct
4 Correct 150 ms 695536 KB Output is correct
5 Correct 168 ms 695632 KB Output is correct
6 Correct 181 ms 667048 KB Output is correct
7 Correct 177 ms 666900 KB Output is correct
8 Correct 167 ms 695684 KB Output is correct
9 Correct 157 ms 666864 KB Output is correct
10 Correct 153 ms 695776 KB Output is correct
11 Correct 247 ms 599172 KB Output is correct
12 Correct 354 ms 679156 KB Output is correct
13 Correct 243 ms 656720 KB Output is correct
14 Correct 57 ms 489968 KB Output is correct
15 Correct 168 ms 667012 KB Output is correct
16 Correct 186 ms 667016 KB Output is correct
17 Correct 162 ms 693584 KB Output is correct
18 Correct 158 ms 693528 KB Output is correct
19 Correct 187 ms 666964 KB Output is correct
20 Correct 184 ms 695708 KB Output is correct
21 Correct 176 ms 695780 KB Output is correct
22 Correct 220 ms 595112 KB Output is correct
23 Correct 250 ms 679272 KB Output is correct
24 Correct 430 ms 679140 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 58 ms 489812 KB Output is correct
2 Correct 176 ms 666848 KB Output is correct
3 Correct 184 ms 695772 KB Output is correct
4 Correct 150 ms 695536 KB Output is correct
5 Correct 168 ms 695632 KB Output is correct
6 Correct 181 ms 667048 KB Output is correct
7 Correct 177 ms 666900 KB Output is correct
8 Correct 167 ms 695684 KB Output is correct
9 Correct 157 ms 666864 KB Output is correct
10 Correct 153 ms 695776 KB Output is correct
11 Correct 247 ms 599172 KB Output is correct
12 Correct 354 ms 679156 KB Output is correct
13 Correct 243 ms 656720 KB Output is correct
14 Correct 57 ms 489968 KB Output is correct
15 Correct 168 ms 667012 KB Output is correct
16 Correct 186 ms 667016 KB Output is correct
17 Correct 162 ms 693584 KB Output is correct
18 Correct 158 ms 693528 KB Output is correct
19 Correct 187 ms 666964 KB Output is correct
20 Correct 184 ms 695708 KB Output is correct
21 Correct 176 ms 695780 KB Output is correct
22 Correct 220 ms 595112 KB Output is correct
23 Correct 250 ms 679272 KB Output is correct
24 Correct 430 ms 679140 KB Output is correct
25 Correct 162 ms 666216 KB Output is correct
26 Correct 199 ms 666856 KB Output is correct
27 Correct 177 ms 666888 KB Output is correct
28 Correct 179 ms 666968 KB Output is correct
29 Correct 210 ms 666960 KB Output is correct
30 Correct 206 ms 695656 KB Output is correct
31 Correct 187 ms 695580 KB Output is correct
32 Correct 352 ms 679120 KB Output is correct
33 Correct 1027 ms 685456 KB Output is correct
34 Correct 1141 ms 687344 KB Output is correct
35 Correct 504 ms 679272 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 56 ms 491856 KB Output is correct
2 Correct 1091 ms 1879452 KB Output is correct
3 Correct 953 ms 1883104 KB Output is correct
4 Correct 723 ms 1883468 KB Output is correct
5 Correct 806 ms 1840048 KB Output is correct
6 Correct 998 ms 1879312 KB Output is correct
7 Correct 642 ms 1883288 KB Output is correct
8 Correct 58 ms 489812 KB Output is correct
9 Correct 176 ms 666848 KB Output is correct
10 Correct 184 ms 695772 KB Output is correct
11 Correct 150 ms 695536 KB Output is correct
12 Correct 168 ms 695632 KB Output is correct
13 Correct 181 ms 667048 KB Output is correct
14 Correct 177 ms 666900 KB Output is correct
15 Correct 167 ms 695684 KB Output is correct
16 Correct 157 ms 666864 KB Output is correct
17 Correct 153 ms 695776 KB Output is correct
18 Correct 247 ms 599172 KB Output is correct
19 Correct 354 ms 679156 KB Output is correct
20 Correct 243 ms 656720 KB Output is correct
21 Correct 57 ms 489968 KB Output is correct
22 Correct 168 ms 667012 KB Output is correct
23 Correct 186 ms 667016 KB Output is correct
24 Correct 162 ms 693584 KB Output is correct
25 Correct 158 ms 693528 KB Output is correct
26 Correct 187 ms 666964 KB Output is correct
27 Correct 184 ms 695708 KB Output is correct
28 Correct 176 ms 695780 KB Output is correct
29 Correct 220 ms 595112 KB Output is correct
30 Correct 250 ms 679272 KB Output is correct
31 Correct 430 ms 679140 KB Output is correct
32 Correct 162 ms 666216 KB Output is correct
33 Correct 199 ms 666856 KB Output is correct
34 Correct 177 ms 666888 KB Output is correct
35 Correct 179 ms 666968 KB Output is correct
36 Correct 210 ms 666960 KB Output is correct
37 Correct 206 ms 695656 KB Output is correct
38 Correct 187 ms 695580 KB Output is correct
39 Correct 352 ms 679120 KB Output is correct
40 Correct 1027 ms 685456 KB Output is correct
41 Correct 1141 ms 687344 KB Output is correct
42 Correct 504 ms 679272 KB Output is correct
43 Correct 53 ms 479384 KB Output is correct
44 Correct 62 ms 489812 KB Output is correct
45 Correct 1191 ms 1840004 KB Output is correct
46 Correct 1004 ms 1840208 KB Output is correct
47 Correct 1045 ms 1840068 KB Output is correct
48 Correct 809 ms 1879488 KB Output is correct
49 Correct 1216 ms 1840080 KB Output is correct
50 Correct 1081 ms 1879124 KB Output is correct
51 Correct 790 ms 1879068 KB Output is correct
52 Correct 1179 ms 1879128 KB Output is correct
53 Correct 2710 ms 1860548 KB Output is correct
54 Correct 1856 ms 1866656 KB Output is correct
55 Correct 2016 ms 1866892 KB Output is correct
56 Correct 2796 ms 1862712 KB Output is correct
57 Correct 3087 ms 1860640 KB Output is correct
58 Correct 3418 ms 1860500 KB Output is correct
59 Correct 3002 ms 1860412 KB Output is correct
60 Correct 2720 ms 1874984 KB Output is correct
61 Correct 2318 ms 1867048 KB Output is correct