제출 #1204011

#제출 시각아이디문제언어결과실행 시간메모리
1204011MuhammadSaramPark (JOI17_park)C++20
37 / 100
48 ms516 KiB
#include "park.h" #include <bits/stdc++.h> using namespace std; void Detect(int T, int n){ int on[1400]={}; if (T==1) { for (int i=0;i<n;i++) for (int j=i+1;j<n;j++) { on[i]=on[j]=1; if (Ask(i,j,on)) Answer(i,j); on[i]=on[j]=0; } return; } vector<int> dep[9]; dep[0]={0}; int par[n]; bool vis[n]={}; for (int d=1;d<=9;d++) { for (int j=d-1;j>=0;j--) for (int u:dep[j]) on[u]=1; for (int i=1;i<n;i++) if (!vis[i]) { on[i]=1; if (Ask(0,i,on)) dep[d].push_back(i),vis[i]=1; on[i]=0; } for (int i=0;i<n;i++) on[i]=0; for (int u:dep[d]) { int s=-1,e=dep[d-1].size()-1; while (s+1<e) { int mid=(s+e)/2; on[0]=on[u]=1; for (int j=0;j<=mid;j++) { int v=dep[d-1][j]; while (v) on[v]=1,v=par[v]; } if (Ask(0,u,on)) e=mid; else s=mid; for (int i=0;i<n;i++) on[i]=0; } par[u]=dep[d-1][e]; Answer(min(par[u],u),max(par[u],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...