Submission #1216695

#TimeUsernameProblemLanguageResultExecution timeMemory
1216695Ghulam_JunaidSpeedrun (RMI21_speedrun)C++20
100 / 100
56 ms536 KiB
#include <bits/stdc++.h> #include "speedrun.h" // #include "grader.cpp" using namespace std; const int N = 1005; int n, len, par[N]; vector<int> g[N], path; void give(int v, int val){ for (int i = 0; i < len; i ++) setHint(v, i + 1, bool((1 << i) & val)); } void dfs(int v, int p = 0){ path.push_back(v); par[v] = p; for (int u : g[v]) if (u != p) dfs(u, v); } void assignHints(int subtask, int nn, int A[], int B[]) { int n = nn; for (int i = 1; i < n; i ++){ if (A[i] > B[i]) swap(A[i], B[i]); g[A[i]].push_back(B[i]); g[B[i]].push_back(A[i]); } // cout << "HERE" << endl; int r = 1; while (g[r].size() > 1) r++; dfs(r); // cout << "root = " << r << endl; len = 20; setHintLen(20); int ind[n + 1]; for (int i = 0; i < path.size(); i ++) ind[path[i]] = i; for (int v = 1; v <= n; v ++){ int nxt = 0; if (1 + ind[v] < path.size()) nxt = path[1 + ind[v]]; give(v, par[v] + 1024 * nxt); } } vector<int> extract(){ vector<int> info; int val = 0; for (int i = 0; i < len; i ++){ val += (1 << (i % 10)) * getHint(i + 1); if (i % 10 == 9){ info.push_back(val); val = 0; } } return info; } void speedrun(int subtask, int N, int cur) { len = getLength(); vector<int> vec = extract(); while (vec[0] != 0){ goTo(vec[0]); cur = vec[0]; vec = extract(); } // cout << "now at root = " << cur << endl; int vis = 1; while (vis != N){ vec = extract(); int nxt = vec[1]; while (!goTo(nxt)){ vec = extract(); goTo(vec[0]); } vis++; } }
#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...