Submission #236363

#TimeUsernameProblemLanguageResultExecution timeMemory
236363Knps4422Library (JOI18_library)C++14
100 / 100
465 ms632 KiB
//#pragma optimization_level 3 //#pragma GCC optimize("Ofast,no-stack-protector,unroll-loops,fast-math,O3") //#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native") #include<bits/stdc++.h> #include"library.h" /* #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> #include <ext/pb_ds/detail/standard_policies.hpp> using namespace __gnu_pbds; typedef tree<int,null_type,less<int>,rb_tree_tag,tree_order_statistics_node_update>ordset; */ #define fr first #define sc second #define vec vector #define pb push_back #define pii pair<int, int> #define forn(x,y) for(int x = 1 ; x <= (int)y ; ++x) #define all(x) (x).begin(),(x).end() #define fast cin.tie(0);cout.tie(0);cin.sync_with_stdio(0);cout.sync_with_stdio(0); using namespace std; typedef long long ll; typedef unsigned int uint; typedef complex<int> point; const int nmax = 2005; const ll linf = 1e18; const ll mod = 998244353; const int inf = INT_MAX; vec < int > A,B; void Solve(int n){ A.resize(n); if(n == 1){Answer({1});return;} for(int i = 0 ; i < n; i++){ A[i] = 1; } int p = 0; A[p] = 0; while(Query(A) > 1){ A[p] = 1; p++; A[p] = 0; } p++; vec < int > rez; rez.pb(p); set < int > avb; forn(i,n)if(i!=p)avb.insert(i); while( avb.size() > 1){ B.clear(); for(int i : avb){ B.pb(i); } int l = 0, r = B.size() -1; while( l < r){ int mid = (l+r)/2; for(int i = 0 ; i < n; i++)A[i] = 0; for(int i = l; i <= mid ; i++) A[B[i]-1] = 1; int r1 = Query(A); A[p-1] = 1; int r2 = Query(A); if(r1 < r2){ l = mid+1; }else{ r = mid; } } avb.erase(B[l]); rez.pb(B[l]); p = B[l]; } for(int i : avb)rez.pb(i); Answer(rez); } /*int main(){ fast; }*/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...