답안 #429157

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
429157 2021-06-15T17:55:55 Z koioi.org-koosaga Meetings (JOI19_meetings) C++17
0 / 100
99 ms 640 KB
#include "meetings.h"
#include <bits/stdc++.h>
using namespace std;
using pi = pair<int, int>;
#define sz(v) ((int)(v).size())
#define all(v) (v).begin(), (v).end()

mt19937 rng(0x14004);
int randint(int lb, int ub){ return uniform_int_distribution<int>(lb, ub)(rng); }
 
void bridge(int x, int y){ Bridge(min(x, y), max(x, y)); }
 
void dfs(vector<int> v){
	if(v.size() == 1) return;
	if(v.size() == 2){
		bridge(v[0], v[1]);
		return;
	}
    shuffle(v.begin()+1, v.end(), rng);
    vector<pi> ords;
    ords.emplace_back(v[0], v[0]);
    ords.emplace_back(v[1], v[1]);
	for(int i=2; i<v.size(); i++){
		int q = Query(v[0], v[1], v[i]);
		ords.emplace_back(q, i);
	}
	sort(ords.begin(), ords.end(), [&](pi a, pi b){
		if(a.first != b.first) return Query(v[0], a.first, b.first) == a.first;
		return a.second < b.second;
	});
	for(int i = 0; i < sz(ords); ){
		int e = i;
      vector<int> w;
		while(e < sz(ords) && ords[i].first == ords[e].first){
			w.push_back(ords[e++].second);
		}
		swap(w[0], *find(all(w), ords[i].first));
		dfs(w);
		if(e < sz(ords)) Bridge(ords[i].first, ords[e].first);
		i = e;
	}
}
 
void Solve(int N) {
	vector<int> v(N);
	iota(v.begin(), v.end(), 0);
	dfs(v);
}

Compilation message

meetings.cpp: In function 'void dfs(std::vector<int>)':
meetings.cpp:23:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   23 |  for(int i=2; i<v.size(); i++){
      |               ~^~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 328 KB Wrong Answer [1]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 328 KB Wrong Answer [1]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 328 KB Wrong Answer [1]
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 99 ms 640 KB Wrong Answer [1]
2 Halted 0 ms 0 KB -