Submission #765349

#TimeUsernameProblemLanguageResultExecution timeMemory
765349vjudge1Speedrun (RMI21_speedrun)C++17
19 / 100
201 ms48260 KiB
#include <bits/stdc++.h> #include "speedrun.h" using namespace std; const int MAXN=1e3+5; vector<int> sos[MAXN][MAXN]; int cnt[MAXN]; vector<vector<int> > g(MAXN); void assignHints(int subtask, int N, int A[], int B[]) { if(subtask==1) { setHintLen(N); for(int i=1; i<N; i++) { g[A[i]].push_back(B[i]); g[B[i]].push_back(A[i]); } for(int i=1; i<=N; i++) { for(auto to : g[i])setHint(i, to, 1); } } if(subtask==2) { setHintLen(10); int x=0; for(int i=1; i<N; i++) { g[A[i]].push_back(B[i]); g[B[i]].push_back(A[i]); if(g[A[i]].size()>1)x=i; } if(x==0)x=1; for(int j=1; j<=10; j++)setHint(x, j, 1); for(int i=1; i<=N; i++) { if(g[i].size()==1) { for(int j=1; j<=10; j++) { setHint(i, j, (x & (1<<(j-1)) ? 1 : 0)); } } } } if(subtask==3) { setHintLen(20); for(int i=1; i<N; i++) { g[A[i]].push_back(B[i]); g[B[i]].push_back(A[i]); } for(int i=1; i<=N; i++) { int cnt=0; for(auto to : g[i]) { if(cnt==0) { for(int j=1; j<=10; j++) { setHint(i, j, (to&(1<<(j-1)) ? 1 : 0)); } cnt++; }else { for(int j=11; j<=20; j++) { setHint(i, j, (to&(1<<(j-11)) ? 1 : 0)); } } } } } return; } int us[MAXN]; void dfs(int v, int p, int N, int subtask) { us[v]=1; if(subtask==1) { vector<int> gg; for(int j=1; j<=N; j++) { if(getHint(j))gg.push_back(j); } for(auto to : gg) { if(!us[to]) { goTo(to); dfs(to, v, N, subtask); } } if(v!=p)goTo(p); else return; } if(subtask==3) { vector<int> gg; int x=0, y=0; for(int j=1; j<=10; j++) { if(getHint(j))x+=(1<<(j-1)); } for(int j=11; j<=20; j++) { if(getHint(j))y+=(1<<(j-11)); } if(x>0)gg.push_back(x); if(y>0)gg.push_back(y); for(auto to : gg) { if(!us[to]) { goTo(to); dfs(to, v, N, subtask); } } if(v!=p)goTo(p); else return; } } void speedrun(int subtask, int N, int start) { if(subtask==1) { int len=getLength(); dfs(start, start, N, subtask); } if(subtask==3) { int len=getLength(); dfs(start, start, N, subtask); }else { int len=getLength(); bool ok=1; for(int j=1; j<=10; j++) { if(!getHint(j)) { ok=0; break; } } if(ok) { for(int i=1; i<=N; i++) { if(start!=i) { goTo(i); goTo(start); } } }else { int x=0; for(int j=1; j<=10; j++) { if(getHint(j))x+=(1<<(j-1)); } goTo(x); for(int i=1; i<=N; i++) { goTo(i); goTo(x); } } } return; }

Compilation message (stderr)

speedrun.cpp: In function 'void speedrun(int, int, int)':
speedrun.cpp:101:7: warning: unused variable 'len' [-Wunused-variable]
  101 |   int len=getLength();
      |       ^~~
speedrun.cpp:105:7: warning: unused variable 'len' [-Wunused-variable]
  105 |   int len=getLength();
      |       ^~~
speedrun.cpp:108:7: warning: unused variable 'len' [-Wunused-variable]
  108 |   int len=getLength();
      |       ^~~
#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...