이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "meetings.h"
#include <algorithm>
#include <vector>
#include <map>
using namespace std;
int x, y;
bool cmp(int a, int b)
{
if (a == x) return true;
if (b == x || a == b) return false;
return Query(x, a, b) == a;
}
void solve(const vector<int>& v)
{
if (v.size() == 1) return;
x = y = v[rand() % v.size()];
while (x == y) y = v[rand() % v.size()];
map<int, vector<int> > m;
m[x].push_back(x);
m[y].push_back(y);
vector<int> path = { x, y };
for (int i : v) if (x != i && y != i)
{
int qi = Query(x, y, i);
if (qi == i) path.push_back(i);
m[qi].push_back(i);
}
sort(path.begin(), path.end(), cmp);
for (int i = 0; i < path.size() - 1; i++)
Bridge(min(path[i], path[i+1]), max(path[i], path[i + 1]));
for (const pair<int, vector<int> >& i : m) solve(i.second);
}
void Solve(int N)
{
vector<int> path;
for (int i = 0; i < N; i++) path.push_back(i);
solve(path);
}
컴파일 시 표준 에러 (stderr) 메시지
meetings.cpp: In function 'void solve(const std::vector<int>&)':
meetings.cpp:30:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
30 | for (int i = 0; i < path.size() - 1; i++)
| ~~^~~~~~~~~~~~~~~~~
# | 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... |