Submission #442402

#TimeUTC-0UsernameProblemLanguageResultExecution timeMemory
4424022021-07-07 17:14:28PajarajaDungeons Game (IOI21_dungeons)C++17
100 / 100
4536 ms1658404 KiB
#include "dungeons.h"
#include <bits/stdc++.h>
#define MAXN 400007
#define MAXL 25
#define MAXK 8
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]*8;
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;
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Compilation message (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 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...