이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "dungeons.h"
#include <bits/stdc++.h>
#define MAXN 400007
#define MAXL 25
#define MAXK 4
using namespace std;
vector<int> s,p,w,l,g[MAXN],we[MAXN];
long long sum[MAXK][MAXL][MAXN],mn[MAXK][MAXL][MAXN],add[MAXN],stp[10];
int pr[MAXK][MAXL][MAXN],n;
void dfs(int s,long long a)
{
add[s]=a;
for(int i=0;i<g[s].size();i++) dfs(g[s][i],a+we[s][i]);
}
void init(int N, std::vector<int> S, std::vector<int> P, std::vector<int> W, std::vector<int> L) {
n=N; s=S; p=P; w=W; l=L; w.push_back(n); l.push_back(n); s.push_back(0); p.push_back(0);
stp[0]=1; for(int i=1;i<10;i++) stp[i]=stp[i-1]*57;
for(int k=0;k<MAXK;k++)
{
int st=stp[k];
for(int i=0;i<n;i++)
{
if(s[i]<=st) {pr[k][0][i]=w[i]; sum[k][0][i]=s[i]; mn[k][0][i]=1000000000000000000LL;}
else {pr[k][0][i]=l[i]; sum[k][0][i]=p[i]; mn[k][0][i]=s[i];}
}
pr[k][0][n]=n; sum[k][0][n]=0; mn[k][0][n]=1000000000000000000LL;
for(int j=1;j<MAXL;j++) for(int i=0;i<=n;i++)
{
pr[k][j][i]=pr[k][j-1][pr[k][j-1][i]];
sum[k][j][i]=sum[k][j-1][i]+sum[k][j-1][pr[k][j-1][i]]; if(sum[k][j][i]>1000000000000000000LL) sum[k][j][i]=1000000000000000000LL;
mn[k][j][i]=min(mn[k][j-1][i],mn[k][j-1][pr[k][j-1][i]]-sum[k][j-1][i]);
}
}
for(int i=0;i<n;i++) {g[w[i]].push_back(i); we[w[i]].push_back(s[i]);}
dfs(n,0);
}
long long simulate(int x, int z) {
long long st=z;
for(int k=0;k<MAXK;k++)
{
while(true)
{
if(st>=stp[k+1] || x==n) break;
for(int j=MAXL-1;j>=0;j--) if(mn[k][j][x]>st) {st+=sum[k][j][x]; x=pr[k][j][x];}
st+=s[x]; x=w[x];
}
}
return st+add[x];
}
컴파일 시 표준 에러 (stderr) 메시지
dungeons.cpp: In function 'void dfs(int, long long int)':
dungeons.cpp:13:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
13 | for(int i=0;i<g[s].size();i++) dfs(g[s][i],a+we[s][i]);
| ~^~~~~~~~~~~~
# | 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... |