제출 #1284849

#제출 시각아이디문제언어결과실행 시간메모리
1284849Muhammad_AneeqIsland Hopping (JOI24_island)C++20
22 / 100
3 ms428 KiB
#include "island.h" #include "iostream" #include "bits/stdc++.h" using namespace std; int const MAXN=310; int vis[MAXN]={}; set<int>s; bool rt[MAXN]={}; void sol(int N) { vector<int>z; vector<pair<int,int>>ed; int g=query(N,1); int y; s.erase(N); s.erase(g); vis[N]=1; if (!vis[g]) { ed.push_back({N,g}); y=query(g,1); vis[g]=1; s.erase(g); if (!vis[y]) { z={}; ed.push_back({y,g}); z.push_back(y); for (int j=0;j<z.size();j++) { int i=z[j]; s.erase(i); vis[i]=1; int f=query(i,1); if (vis[f]) { f=query(i,2); if (vis[f]) break; } ed.push_back({i,f}); z.push_back(f); } } } y=query(N,2); if(!vis[y]&&!(rt[y]&&rt[N])) { z={}; ed.push_back({y,N}); vis[y]=1; z.push_back(y); for (int j=0;j<z.size();j++) { int i=z[j]; s.erase(i); vis[i]=1; int f=query(i,1); if (vis[f]) { f=query(i,2); if (vis[f]) break; } ed.push_back({i,f}); z.push_back(f); } } for (auto [i,j]:ed) { answer(i,j); } } void solve(int N, int L) { for (int i=1;i<=N;i++) s.insert(i); vis[1]=2; s.erase(1); for (int i=1;i<=3;i++) { int z=query(1,i); rt[z]=1; answer(1,z); } while (s.size()) sol(*rbegin(s)); }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...