Submission #1305767

#TimeUsernameProblemLanguageResultExecution timeMemory
1305767jojeonghoonLibrary (JOI18_library)C++20
0 / 100
9 ms440 KiB
#include <bits/stdc++.h> #include "library.h" #define ll long long //#define int ll #define i32 __int32_t #define i64 __int64_t #define i128 __int128_t #define db double #define pii pair<int,int> #define pll pair<ll,ll> #define bk back() #define bg begin() #define ed end() using namespace std; int N; vector<vector<int>> A; int Qur(vector<vector<int>>v, int x){ vector<int>m; m.assign(N,0); m[x-1]=1; for(auto i:v) for(auto j:i) m[j-1]=1; return Query(m); } void F(int x){ int k = (int)A.size()+1-Qur(A,x); vector<int>in={x}; if(k==0){ A.push_back(in); return; } if(k==1 || k==2){ int low=0, hig=(int)A.size()-1; while(low<hig){ int mid=low+hig>>1; vector<vector<int>>v; for(int i=0; i<=mid; i++) v.push_back(A[i]); if(Qur(v,x) == v.size()+1) low=mid+1; else hig=mid; } if(low!=A.size()-1) swap(A[low], A[A.size()-1]); vector<int> B=A.bk; A.pop_back(); if(Qur({{B.bk}},x)==2) reverse(B.bg,B.ed); in=B; in.push_back(x); } if(k==2){ int low=0, hig=(int)A.size()-1; while(low<hig){ int mid=low+hig>>1; vector<vector<int>>v; for(int i=0; i<mid; i++) v.push_back(A[i]); if(Qur(v,x) == v.size()+1) low=mid+1; else hig=mid; } if(low!=A.size()-1) swap(A[low], A[A.size()-1]); vector<int> B=A.bk; A.pop_back(); for(int i:B) in.push_back(i); } A.push_back(in); } void Solve(int N_){ N=N_; A.push_back({1}); for(int i=2; i<=N; i++){ F(i); } Answer(A[0]); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...