제출 #1223275

#제출 시각아이디문제언어결과실행 시간메모리
1223275Sir_Ahmed_ImranSpeedrun (RMI21_speedrun)C++17
100 / 100
57 ms552 KiB
#include "speedrun.h" #include <bits/stdc++.h> using namespace std; #define MAXN 1001 #define nl '\n' #define ff first #define ss second #define add insert #define ll long long #define ld long double #define terminator main #define pll pair<ll,ll> #define append push_back #define pii pair<int,int> #define all(x) (x).begin(),(x).end() int vis[MAXN]; vector<int> vec; vector<int> e[MAXN]; int get(int i, int j){ int x = 0; for(int k = j; k >= i; k--) x = (x * 2 + getHint(k)); return x; } void dfs(int v, int u){ vec.append(v); for(auto & i : e[v]) if(i != u) dfs(i, v); for(int i = 11; i <= 20; i++){ setHint(v, i, u & 1); u /= 2; } } void assignHints(int t, int n, int a[], int b[]){ setHintLen(20); for(int i = 1; i < n; i++){ e[a[i]].append(b[i]); e[b[i]].append(a[i]); } dfs(1, 0); int v, x; for(int i = 0; i < n; i++){ v = vec[i], x = vec[(i + 1) % n]; for(int j = 1; j <= 10; j++){ setHint(v, j, x & 1); x /= 2; } } } void speedrun(int t, int n, int v){ int cnt, x; vis[v] = cnt = 1; x = get(1, 10); while(cnt < n){ if(goTo(x)){ v = x; x = get(1, 10); } else{ v = get(11, 20); goTo(v); } if(!vis[v]){ vis[v] = 1; cnt++; } } }
#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...