Submission #441125

#TimeUsernameProblemLanguageResultExecution timeMemory
441125A_D던전 (IOI21_dungeons)C++17
0 / 100
61 ms5324 KiB
#include "dungeons.h" #include <bits/stdc++.h> #define LL long long using namespace std; const LL L=30; const LL N=4e5+100; const LL H=7; LL st[N][L][H]; LL cost[N][L][H]; set<LL> stt; vector<LL> vec; LL nn; vector<LL> s,p,w,l; void init(int n,vector<int> S,vector<int> P,vector<int> W,vector<int> LLL){ nn=n; for(int i=0;i<nn;i++){ s.push_back(S[i]); p.push_back(P[i]); w.push_back(W[i]); l.push_back(LLL[i]); } for(int i=0;i<nn;i++){ stt.insert(s[i]); } if(stt.size()>5)assert(0); vec.push_back(0); for(auto x:stt)vec.push_back(x); while(vec.size()<H+1){ vec.push_back(1e9); } for(int h=0;h<H;h++){ st[nn][0][h]=nn; for(int i=0;i<nn;i++){ if(vec[h]>=s[i]){ st[i][0][h]=w[i]; cost[i][0][h]=s[i]; } else{ st[i][0][h]=l[i]; cost[i][0][h]=p[i]; } } } for(int h=0;h<H;h++){ for(int j=1;j<L;j++){ for(int i=0;i<=nn;i++){ st[i][j][h]=st[st[i][j-1][h]][j-1][h]; cost[i][j][h]=cost[i][j-1][h]+cost[st[i][j-1][h]][j-1][h]; } } } } long long simulate(int xx, int zz){ LL x=xx; LL z=zz; for(int h=0;h<H;h++){ for(int j=L-1;j>=0;j--){ LL nx=st[x][j][h]; LL c=z+cost[x][j][h]; if(c<vec[h+1]&&x!=nn){ x=nx; x=c; } } if(x!=nn&&z<vec[h+1]){ z+=cost[x][0][h]; x=st[x][0][h]; } } 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...