Submission #764909

#TimeUsernameProblemLanguageResultExecution timeMemory
764909vjudge1Speedrun (RMI21_speedrun)C++17
0 / 100
3538 ms736 KiB
#include "speedrun.h" #include <vector> #include <stack> using namespace std; const int MAXN = 1002; vector<int>g[MAXN]; void setH(int pos, int val, int l, int r) { for (int i = 0 ; i < r - l + 1 ; ++ i) { setHint(pos, i + l, (val >> i) & 1); } } void dfs(int v, int p) { setH(v, p, 1, 10); int child = 0; vector<int>children; for (int to : g[v]) if (to != p) { child = to; dfs(to, v); children.emplace_back(to); } setH(v, child, 11, 20); int m = children.size(); for (int i = 0 ; i < m ; ++ i) { int x = children[i]; int y = children[i == m - 1 ? 0 : i + 1]; setH(x, y, 21, 30); } } void assignHints(int subtask, int N, int A[], int B[]) { /* your solution here */ // for every node, we want to insert: // 1) its parent // 2) its sibling // 3) its child setHintLen(30); for (int i = 1 ; i < N ; ++ i) { g[A[i]].emplace_back(B[i]); g[B[i]].emplace_back(A[i]); } dfs(1, 0); } int used[MAXN]; int getH(int l, int r) { int ret = 0; for (int i = 0 ; i < r - l + 1 ; ++ i) { ret += (1 << i) * getHint(i + l); } return ret; } void speedrun(int subtask, int N, int start) { /* your solution here */ int x; while (x = getH(1, 10)) { goTo(x); } // now where are at the root // we can do dfs now used[0] = 1; int v = 1; while (1) { used[v] = 1; int c = getH(11, 20); if (!used[c]) { goTo(c); continue; } int s = getH(21, 30); if (!used[s]) { int p = getH(1, 10); goTo(p); goTo(s); continue; } int p = getH(1, 10); if (!p) break; goTo(p); } }

Compilation message (stderr)

speedrun.cpp: In function 'void speedrun(int, int, int)':
speedrun.cpp:60:14: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
   60 |     while (x = getH(1, 10)) {
      |            ~~^~~~~~~~~~~~~
#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...