이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "meetings.h"
#include <iostream>
#include <vector>
using namespace std;
const int maxN = 2e3 + 326;
vector<int> adj[maxN];
int Rand(){
static int seed = 101;
return seed = (seed * 3 + 1) % 0xdefaced;
}
void solve(vector<int> vec){
//cout << "vec = "; for(int x : vec) cout << x << " "; cout << endl;
if(vec.size() == 1) return;
if(vec.size() == 2){
//cout << "Bridging: " << vec[0] << ", " << vec[1] << endl;
if(vec[0] > vec[1]) swap(vec[0], vec[1]);
Bridge(vec[0], vec[1]);
return;
}
int cur = vec[1];
for(int i = 2; i < (int)vec.size(); i++){
int res = Query(vec[0], cur, vec[i]);
if(res == vec[i]) cur = res;
}
//cout << "Bridging: " << vec[0] << ", " << cur << endl;
vector<int> l, r;
l.push_back(vec[0]);
r.push_back(cur);
for(int i = 1; i < (int)vec.size(); i++) if(vec[i] != cur){
int res = Query(vec[0], cur, vec[i]);
if(res == vec[0]) l.push_back(vec[i]);
else r.push_back(vec[i]);
}
solve(l);
solve(r);
if(vec[0] > cur) swap(vec[0], cur);
Bridge(vec[0], cur);
}
void Solve(int N){
vector<int> jizz = vector<int>();
for(int i = N - 1; i >= 0; i--) jizz.push_back(i);
solve(jizz);
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |