Submission #828942

#TimeUsernameProblemLanguageResultExecution timeMemory
828942Liudas던전 (IOI21_dungeons)C++17
13 / 100
273 ms41492 KiB
#include "dungeons.h" #include <vector> #include <cassert> #include <cstdio> #include <iostream> #include <fstream> using namespace std; struct node{ long long ws, ls, w, l, dep; vector<long long> child; vector<long long> par; vector<long long> cv; }; vector<node> tree; void dfs(int head, int c){ tree[head].dep = c; for(int i : tree[head].par){ dfs(i, c+1); } } void init(int n, vector<int> s, vector<int> p, vector<int> w, vector<int> l){ tree.resize(n+1); for(int i = 0; i < n; i ++){ tree[i].ws = s[i]; tree[i].ls = p[i]; tree[i].w = w[i]; tree[i].l = l[i]; tree[w[i]].par.push_back(i); tree[i].child.push_back(l[i]); tree[i].cv.push_back(p[i]); } tree[n].child.push_back(n); tree[n].cv.push_back(0); dfs(n, 0); for(int i = 0; i < 30; i ++){ for(int j = 0; j <= n; j ++){ tree[j].child.push_back(tree[tree[j].child[i]].child[i]); tree[j].cv.push_back(tree[tree[j].child[i]].cv[i] + tree[j].cv[i]); } } } long long simulate(int x, int z){ long long ans = z; while(x + 1 != tree.size()){ if(ans >= tree[x].ws){ ans += tree[x].ws * tree[x].dep; x = tree.size()-1; } else{ int p = 0; while(tree[x].cv[p + 1] + ans < tree[x].ws && p < 25){ p++; } ans += tree[x].cv[p]; x = tree[x].child[p]; } } return ans; }

Compilation message (stderr)

dungeons.cpp: In function 'long long int simulate(int, int)':
dungeons.cpp:44:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<node>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   44 |     while(x + 1 != tree.size()){
      |           ~~~~~~^~~~~~~~~~~~~~
#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...