제출 #923939

#제출 시각아이디문제언어결과실행 시간메모리
923939Tyx2019Speedrun (RMI21_speedrun)C++17
0 / 100
228 ms896 KiB
#include "speedrun.h" #include <bits/stdc++.h> using namespace std; vector<int> adj[1005]; vector<int> dfsorder; int pararray[1005]; void dfs(int cur, int par){ pararray[cur]=par; dfsorder.push_back(cur); for(auto newnode:adj[cur]){ if(newnode!=par){ dfs(newnode,cur); } } } void assignHints(int subtask, int N, int A[], int B[]) { //cout << " am i gay " << endl; for(int i=1;i<N;i++){ adj[A[i]].push_back(B[i]); adj[B[i]].push_back(A[i]); } //cout << "yes i am " << endl; dfs(1, 1023); //cout << "i eat kids" << endl; setHintLen(20); int nextinline[N+5]; for(int i=1;i<N;i++){ nextinline[dfsorder[i-1]]=dfsorder[i]; } //cout << dfsorder.size() << endl; //cout << "Sorry i eat kids" << endl; nextinline[dfsorder[N-1]]=1023; //cout << "sorry what" << endl; for(int i=1;i<=N;i++){ int paren=pararray[i]; for(int j=1;j<=10;j++){ if((paren&(1<<j))==0) setHint(i,j,false); else setHint(i,j,true); } int nex=nextinline[i]; for(int j=1;j<=10;j++){ if((nex&(1<<j))==0) setHint(i,j+10,false); else setHint(i,j+10,true); } } } void speedrun(int subtask, int N, int start) { //Get to the root int cur=start; while(cur!=1){ int paren=0; int lol=1; for(int i=1;i<=10;i++){ paren += getHint(i) * lol; lol *= 2; } goTo(paren); cur=paren; } int parens[N+5]; for(int j=0;j<N-1;j++){ int par=0; int lul=1; for(int i=1;i<=10;i++){ par += getHint(i)*lul; lul*=2; } parens[cur]=par; int next=0; int lol=1; for(int i=11;i<=20;i++){ next += getHint(i) * lol; lol *= 2; } if(goTo(next)){ cur=next; } else{ while(true){ int backto=parens[cur]; goTo(backto); if(goTo(next)){ cur=next; break; } } } } return; //Do the tour }
#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...