Submission #1184097

#TimeUsernameProblemLanguageResultExecution timeMemory
1184097ivazivaLibrary (JOI18_library)C++20
0 / 100
13 ms448 KiB
#include <bits/stdc++.h> #include "library.h" using namespace std; #define MAXN 1001 int pref[MAXN]; vector<int> adj[MAXN],vec,ans; void dfs(int node,int pret) { ans.push_back(node); for (int sled:adj[node]) { if (sled!=pret) dfs(sled,node); } } void Solve(int n) { for (int i=0;i<n;i++) vec.push_back(0); for (int i=2;i<=n;i++) { for (int j=0;j<i-1;j++) vec[j]=1; pref[i-1]=Query(vec);for (int j=0;j<i-1;j++) vec[j]=0; if (adj[i].size()==1) continue; int l=1,r=i-1,rez=-1;vec[i-1]=1; while (l<=r) { int mid=(l+r)/2; for (int j=0;j<mid;j++) vec[j]=1; int sol=Query(vec); if (sol==pref[mid]) {rez=mid;r=mid-1;} else l=mid+1; for (int j=0;j<mid;j++) vec[j]=0; } if (rez!=-1) {adj[i].push_back(rez);adj[rez].push_back(i);} vec[i-1]=0; } for (int i=1;i<=n;i++) pref[i]=0; for (int i=n-1;i>=1;i--) { for (int j=i;j<n;j++) vec[j]=1; pref[i+1]=Query(vec);for (int j=i;j<n;j++) vec[j]=0; if (adj[i].size()==2) continue; int sused=i;if (adj[i].size()==1) sused=adj[i][0]; int l=max(sused,i)+1,r=n,rez=-1;vec[i-1]=1; while (l<=r) { int mid=(l+r)/2; for (int j=mid-1;j<n;j++) vec[j]=1; int sol=Query(vec); if (sol==pref[mid]) {rez=mid;l=mid+1;} else r=mid-1; for (int j=mid-1;j<n;j++) vec[j]=0; } if (rez!=-1) {adj[i].push_back(rez);adj[rez].push_back(i);} vec[i-1]=0; } for (int i=1;i<=n;i++) { if (adj[i].size()==1) {dfs(i,0);break;} } Answer(ans); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...