BOJ 28240 - S리그
여러가지 풀이가 있다.
처음에 다음과 같이 사다리꼴로 배치한다고 해보자.
아래가 넓적한 사다리꼴로 배치, $0$과 $N-1$은 사다리꼴의 왼쪽 아래쪽 점$(y=-\infty)$이고 나머지는 모두 윗변($y=0$)에 위치 시킨다.
$1,2$번 사람 중 $0,N-1$이 아닌사람은 $y$를 $\infty$, $3,4$번 사람중 $0,N-1$이 아닌 사람은 $y$를 $-\infty+1$에 배치하면 된다.
void solve() {
int n;
cin >> n;
vi a(4);
fv(a);
for (int &i: a)i--;
vector<pi> pos(n);
pos[0] = {-1e9, -1e9};
pos[n - 1] = {1e9, -1e9};
for (int i = 1; i < n - 1; i++) {
pos[i] = {i, 0};
}
auto e = [&](int i) {
return a[i] == 0 || a[i] == n - 1;
};
if (!e(0) && !e(1)) {
pos[a[0]].se = 1e9;
pos[a[1]].se = 1e9;
} else if (e(0) && e(1)) {
} else if (e(0)) {
pos[a[1]].se = 1e9;
} else if (e(1)) {
pos[a[0]].se = 1e9;
}
if (!e(2) && !e(3)) {
pos[a[2]].se = -1e9 + 1;
pos[a[3]].se = -1e9 + 1;
} else if (e(2) && e(3)) {
} else if (e(3)) {
pos[a[2]].se = -1e9 + 1;
} else if (e(2)) {
pos[a[3]].se = -1e9 + 1;
}
for (auto &[x, y]: pos) cout << x << ' ' << y << endl;
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
}
}
}
Comments