제출 #131531

#제출 시각아이디문제언어결과실행 시간메모리
131531SirCenessMeetings (JOI19_meetings)C++14
29 / 100
3038 ms1092 KiB
#include "meetings.h"
#include <bits/stdc++.h>

using namespace std;
#define ll long long;
#define mod 1000000007
#define mp make_pair
#define pb push_back
#define bas(x) #x << ": " << x
#define prarr(x, n) cout << #x << ": "; for (int qsd = 0; qsd < n; qsd++) cout << x[qsd] << " "; cout << endl;
#define prarrv(x) cout << #x << ": "; for (int qsd = 0; qsd < (int)x.size(); qsd++) cout << x[qsd] << " "; cout << endl;
#define inside sl<=l%&&r<=sr
#define outside sr<l||r<sl

void get(int root, vector<int>& arr){
	//cout << "get(" << root << ")" << endl;
	//prarrv(arr);
	if (arr.size() == 0) return;
	else if (arr.size() == 1){
		Bridge(min(root, arr[0]), max(root, arr[0]));
		return;
	}
	int ch = arr[rand()%arr.size()];
	vector<int> alt;
	vector<int> ust;
	vector<int> dig;
	ust.pb(ch);
	for (int i = 0; i < arr.size(); i++){
		//cout << "query(" << root << ", " << ch << ", " << arr[i] << ")" << endl;
		if (ch == arr[i]) continue;
		int ans = Query(root, ch, arr[i]);
		if (ans == ch){
			alt.pb(arr[i]);
		} else if (ans == root){
			dig.pb(arr[i]);
		} else {
			ust.pb(arr[i]);
		}
	}
	
	get(root, dig);
	get(root, ust);
	get(ch, alt);
}

void Solve(int N) {
	srand(571);
	vector<int> arr(N-1);
	for (int i = 1; i < N; i++) arr[i-1] = i;
	get(0, arr);
}

컴파일 시 표준 에러 (stderr) 메시지

meetings.cpp: In function 'void get(int, std::vector<int>&)':
meetings.cpp:28:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for (int i = 0; i < arr.size(); i++){
                  ~~^~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...