제출 #577239

#제출 시각아이디문제언어결과실행 시간메모리
577239zaneyuMeetings (JOI19_meetings)C++14
29 / 100
2035 ms6384 KiB
#include "meetings.h" #include<bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> using namespace std; using namespace __gnu_pbds; //order_of_key #of elements less than x // find_by_order kth element typedef long long int ll; #define ld long double #define pii pair<ll,int> typedef tree<pii, null_type, less<pii>, rb_tree_tag, tree_order_statistics_node_update> indexed_set; #define f first #define s second #define pb push_back #define REP(i,n) for(int i=0;i<n;i++) #define REP1(i,n) for(int i=1;i<=n;i++) #define FILL(n,x) memset(n,x,sizeof(n)) #define ALL(_a) _a.begin(),_a.end() #define sz(x) (int)x.size() const ll maxn=2e5+5; const ll maxlg=__lg(maxn)+2; const ll INF64=4e18; const int INF=0x3f3f3f3f; const ll MOD=1e9+7; const ld PI=acos(-1); const ld eps=1e-9; #define lowb(x) x&(-x) #define MNTO(x,y) x=min(x,(__typeof__(x))y) #define MXTO(x,y) x=max(x,(__typeof__(x))y) #define SORT_UNIQUE(c) (sort(c.begin(),c.end()), c.resize(distance(c.begin(),unique(c.begin(),c.end())))) #define GET_POS(c,x) (lower_bound(c.begin(),c.end(),x)-c.begin()) mt19937 rng(69); void rec(vector<int> v){ if(sz(v)<=1) return; int a=v[rng()%sz(v)]; /* cout<<a<<'\n'; for(int x:v) cout<<x<<' '; cout<<'\n';*/ vector<int> pv; vector<vector<int>> cmp; map<int,bool> in; for(int x:v){ if(x==a) continue; if(in.count(x)) continue; bool hv=0; REP(j,sz(cmp)){ int asd=Query(a,pv[j],x); if(asd!=a){ if(!in.count(asd)){ in[asd]=1; cmp[j].pb(asd); pv[j]=asd; } cmp[j].pb(x); hv=1; break; } } in[x]=1; if(!hv) pv.pb(x),cmp.pb({x}); } for(int x:pv){ Bridge(min(a,x),max(a,x)); } for(auto x:cmp){ rec(x); } } void Solve(int n) { vector<int> v; REP(i,n) v.pb(i); rec(v); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...