Submission #344329

#TimeUsernameProblemLanguageResultExecution timeMemory
344329amunduzbaevMeetings (JOI19_meetings)C++14
100 / 100
877 ms1024 KiB
/** made by amunduzbaev **/ #include "meetings.h" #include <bits/stdc++.h> using namespace std; //#include "grader.cpp" #define ff first #define ss second #define pb push_back #define mp make_pair #define ub upper_bound #define lb lower_bound #define ll long long #define ld long double #define pii pair<int, int> #define pll pair<ll, ll> #define sz(x) (int)x.size() #define all(x) x.begin(), x.end() #define rall(x) x.rbegin(),x.rend() #define fastios ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); #define vll vector<ll> #define vii vector<int> #define vpii vector<pii> #define vpll vector<pll> #define cnt(a)__builtin_popcount(a) template<class T> bool umin(T& a, const T& b) {return a > b? a = b, true:false;} template<class T> bool umax(T& a, const T& b) {return a < b? a = b, true:false;} const int NN = 2e3+5; const int mod = 1e9+7; const ll inf = 1e18; const ld Pi = acos(-1); int aa; //, used[NN][NN]; bool cmp(int a, int b){ return Query(b, aa, a) == a; } void add(int x, int y){ if(y < x) swap(x, y); //cout<<x<<" "<<y<<endl; Bridge(x, y); } void res(vii vv){ if(sz(vv) < 2) return; if(sz(vv) == 2){ add(vv[0], vv[1]); return; } random_shuffle(all(vv)); int a = vv[0], b = vv[1]; map<int, vii> tmp; vii path; for(int i=0;i<sz(vv);i++){ if(vv[i] == a || vv[i] == b) continue; int res = Query(a, b, vv[i]); if(!sz(tmp[res]) && res != a && res != b) path.pb(res); tmp[res].pb(vv[i]); } if(path.empty()){ add(a, b); } else{ aa = a; sort(all(path), cmp); add(a, path[0]); for(int i=0;i<sz(path)-1;i++){ add(path[i], path[i+1]); } add(*path.rbegin(), b); } tmp[a].pb(a); tmp[b].pb(b); for(auto x:tmp) res(x.ss); } void Solve(int n){ vii vv; for(int i=0;i<n;i++) vv.pb(i); res(vv); } /* 8 0 1 0 2 0 7 3 7 6 7 4 6 5 6 8 1 2 1 4 0 1 0 3 0 5 5 6 3 7 5 0 1 0 2 1 3 1 4 */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...