Submission #1354460

#TimeUsernameProblemLanguageResultExecution timeMemory
1354460boss_zzMeetings (JOI19_meetings)C++20
100 / 100
586 ms2624 KiB
#include "meetings.h"
#include<bits/stdc++.h>
#pragma GCC optimize("Ofast,inline,unroll-loops") 
#define rep(a,b,c) for(ll a=b;a<=c;++a) 
#define per(a,b,c) for(ll a=b;a>=c;--a) 
#define ll long long 
#define ff first 
#define ss second 
#define mp make_pair 
using namespace std;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
static mt19937 rng((ll)time(nullptr));
const ll N=2005,inf=1e18;
ll n;
void bridge(ll u,ll v){
    if(u>v) swap(u,v);
    Bridge(u,v);
}
void DC(vector<ll> &T){
    if(T.size()<=1) return ;
    //shuffle(T.begin(),T.end(),rng);
    ll s=T.front(),t=T.back();
    vector<ll> path,sub[N];
    path.push_back(s),path.push_back(t);
    sub[s].push_back(s),sub[t].push_back(t);
    for(ll u:T){
        if(u==s||u==t) continue;
        ll res=Query(s,t,u);
        if(res==u) path.push_back(u);
        sub[res].push_back(u);
    }
    stable_sort(path.begin(),path.end(),[&](ll a,ll b){
        if(a==s) return true;
        if(b==s) return false;
        return Query(s,a,b)==a;
    });
    rep(i,0,(ll)path.size()-2) bridge(path[i],path[i+1]);
    for(ll u:path) DC(sub[u]),vector<ll>().swap(sub[u]);
}
void Solve(int NN){
    n=NN;
    vector<ll> T;
    rep(i,0,n-1) T.push_back(i);
    DC(T);
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...