Submission #536925

#TimeUsernameProblemLanguageResultExecution timeMemory
536925zaneyuSpeedrun (RMI21_speedrun)C++14
0 / 100
1 ms336 KiB
#include "speedrun.h" #include <bits/stdc++.h> #define REP(i,n) for(int i=0;i<n;i++) #define MNTO(x,y) x=min(x,y) #define REP1(i,n) for(int i=1;i<=n;i++) #define ll long long #define ld long double #define sz(x) (int)x.size() #define pb push_back #define unq(c) (sort(c.begin(),c.end()), c.resize(distance(c.begin(),unique(c.begin(),c.end())))) const int maxn=1e3+5; using namespace std; vector<int> v[maxn]; void dfs(int u,int p){ REP(j,10) setHint(u,j,(p&(1<<j))>>j); if(sz(v[u])) REP(j,10) setHint(u,j+10,(v[u][0]&(1<<j))>>j); REP(j,sz(v[u])){ int x=v[u][j]; int nxt=u; if(j<sz(v[u])-1) nxt=v[u][j+1]; REP(j,10) setHint(x,j+20,(nxt&(1<<j))>>j); dfs(x,u); } } void assignHints(int subtask, int n, int A[], int B[]) { setHintLen(30); REP1(i,n-1){ if(A[i]>B[i]) swap(A[i],B[i]); v[A[i]].pb(B[i]); } dfs(1,1023); } void dfs2(int u){ int p=0; REP(j,10) p=(p<<1)+getHint(9-j); int x=0; REP(j,10) x=(x<<1)+getHint(19-j); if(x==0){ goTo(p); return; } while(x!=u){ goTo(x); int nx=0; REP(j,10) nx=(nx<<1)+getHint(29-j); dfs2(x); x=nx; } if(u!=1) goTo(p); } void speedrun(int subtask, int n, int start) { while(start!=1){ int p=0; REP(j,10) p=(p<<1)+getHint(9-j); goTo(p); start=p; } dfs2(1); }
#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...