Submission #923948

# Submission time Handle Problem Language Result Execution time Memory
923948 2024-02-08T06:51:59 Z Tyx2019 Speedrun (RMI21_speedrun) C++17
0 / 100
3500 ms 896 KB
#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;
        }
        if(goTo(paren)) continue;
      	else{
          while(true){
            lol*=2;
          }
        }
        cur=paren;
    }
  	return;
    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 time Memory Grader output
1 Execution timed out 3521 ms 892 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 94 ms 892 KB Invalid node index to goTo
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 3607 ms 684 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 3594 ms 892 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 3518 ms 896 KB Time limit exceeded
2 Halted 0 ms 0 KB -