제출 #828935

#제출 시각아이디문제언어결과실행 시간메모리
828935Liudas던전 (IOI21_dungeons)C++17
0 / 100
2 ms724 KiB
#include "dungeons.h" #include <vector> #include <cassert> #include <cstdio> #include <iostream> using namespace std; struct node{ int ws, ls, w, l, dep; vector<int> child; vector<int> par; vector<int> 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] + ans < tree[x].ws){ p++; } ans += tree[x].cv[p]; x = tree[x].child[p]; } } return ans; }

컴파일 시 표준 에러 (stderr) 메시지

dungeons.cpp: In function 'long long int simulate(int, int)':
dungeons.cpp:43:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<node>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   43 |     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...