BOJ 28240 - S리그

image.png

여러가지 풀이가 있다.

처음에 다음과 같이 사다리꼴로 배치한다고 해보자.

image.png

아래가 넓적한 사다리꼴로 배치, $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++) {
      }
   }
}

Tags:

Categories:

Updated:

Comments