Submission #1116923

#TimeUsernameProblemLanguageResultExecution timeMemory
1116923StefanSebezSpeedrun (RMI21_speedrun)C++14
63 / 100
598 ms1172 KiB
#include<bits/stdc++.h> #include "speedrun.h" using namespace std; #define fi first #define se second #define pb push_back #define ll long long #define ld long double const int N=1050; vector<int>E[N],cvorovi; int par[N]; void DFS(int u,int parent){ cvorovi.pb(u); par[u]=parent; for(auto i:E[u]){ if(i==parent) continue; DFS(i,u); } } void assignHints(int subtask, int n, int A[], int B[]) { for(int i=1;i<n;i++){E[A[i]].pb(B[i]),E[B[i]].pb(A[i]);} DFS(1,0); setHintLen(30); for(int i=1;i<=n;i++){ for(int j=1,u=par[i];j<=10;j++,u>>=1){ setHint(i,j,u&1); } } for(int I=0;I<n-1;I++){ int i=cvorovi[I]; int u=cvorovi[I+1],v=par[u]; for(int j=11;j<=20;j++,v>>=1){ setHint(i,j,v&1); } for(int j=21;j<=30;j++,u>>=1){ setHint(i,j,u&1); } } } void speedrun(int subtask, int n, int start) { int U=start; while(U!=1){ int v=0;for(int j=1;j<=10;j++) v+=getHint(j)*(1<<(j-1)); goTo(v); U=v; } int par[n+10]={0},ct=n-1; while(ct--){ int u=0;for(int j=11;j<=20;j++) u+=getHint(j)*(1<<(j-11)); int v=0;for(int j=21;j<=30;j++) v+=getHint(j)*(1<<(j-21)); while(U!=u){ goTo(par[U]); U=par[U]; } goTo(v); U=v;par[v]=u; } }
#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...