Submission #1213059

#TimeUsernameProblemLanguageResultExecution timeMemory
1213059MuhammadSaramSpeedrun (RMI21_speedrun)C++20
100 / 100
55 ms556 KiB
#include "speedrun.h" #include <bits/stdc++.h> using namespace std; #define Set setHint #define go goTo #define get getHint const int M = 1001; vector<int> nei[M],ord; int Par[M]; void dfs(int u) { ord.push_back(u); for (int i:nei[u]) if (i!=Par[u]) Par[i]=u,dfs(i); } void assignHints(int subtask, int n, int a[], int b[]) { setHintLen(20); for (int i=1;i<n;i++) nei[a[i]].push_back(b[i]),nei[b[i]].push_back(a[i]); dfs(1); ord.push_back(0); for (int i=1;i<=n;i++) for (int p=0;p<10;p++) { Set(i,p+1,(Par[i]>>p)%2); Set(ord[i-1],p+11,(ord[i]>>p)%2); } } int calc() { int ans=0; for (int p=11,pw=1;p<=20;p++,pw*=2) ans+=get(p)*pw; return ans; } int par() { int ans=0; for (int p=1,pw=1;p<=10;p++,pw*=2) ans+=get(p)*pw; return ans; } void speedrun(int subtask, int n, int s) { int u=s; getLength(); while (u!=1) u=par(),go(u); int nx=calc(); set<int> se={0,u}; while (nx) { if (go(nx)) { u=nx,nx=calc(); se.insert(u); } else go(par()); } }
#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...