# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
344346 | juggernaut | Meetings (JOI19_meetings) | C++14 | 0 ms | 0 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#ifdef EVAL
#else
#include"grader.cpp"
#endif
#include"meetings.h"
#include<bits/stdc++.h>
using namespace std;
void add(int x,int y){
if(x>y)swap(x,y);
Bridge(x,y);
}
void go(vector<int>v){
if(v.size()<2)return;
//random_shuffle(v.begin(),v.end());
map<int,vector<int>>m;
m[v[0]].push_back(v[0]);
m[v[1]].push_back(v[1]);
vector<int>path;
for(int i=2;i<v.size();i++){
int x=Query(v[0],v[1],v[i]);
if(!m.count(x))path.push_back(x);
m[x].push_back(v[i]);
}
sort(path.begin(),path.end(),[&](int l,int r){return Query(v[0],l,r)==l;});
int last=v[0];
for(int x:path)add(last,x),last=x;
add(last,v[1]);
for(auto it:m)go(it.second);
}
void Solve(int n){
//srand(time(0));
vector<int>all(n);
iota(all.begin(),all.end(),0);
Solve(all);
}