만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

축구 포메이션

면접 대비

시간 제한2초메모리 제한1024 MB

요약
열 명의 선수 위치가 주어질 때, 라인 사이에서 한 방향으로 최대 2명만 이동한다는 조건 아래 가능한 모든 포메이션을 구합니다.
난이도

보통10점 중 4점

유형
완전 탐색, 구현
정답자
아직 제출이 없습니다

문제

축구 전술에서 포메이션은 기본 개념 중 하나다. 포메이션은 필드 플레이어 10명 중 몇 명이 수비, 미드필드, 공격을 맡는지 정한다. 예를 들어 포메이션 5-3-2는 수비수 5명, 미드필더 3명, 공격수 2명을 뜻한다. 현대 축구의 기준에 따라 포메이션은 다음 제약을 만족해야 한다. 수비수는 1명 이상 5명 이하, 미드필더는 1명 이상 5명 이하, 공격수는 3명 이하다. 공격수가 한 명도 없을 수 있다. 이 문제에서는 이러한 제약을 만족하는 포메이션만 고려한다.

축구장의 길이는 120미터, 너비는 80미터다. 그림과 같이 이 경기장에 직사각형 데카르트 좌표계를 설정한다. 우리 팀의 골문은 왼쪽에 있다.

어떤 순간에 선수가 중앙선으로부터 20미터 이내에 있으면 그 선수는 미드필드 라인에 있다고 본다. 자기 진영 골라인으로부터 40미터 이내에 있으면 수비 라인에 있고, 상대 진영 골라인으로부터 40미터 이내에 있으면 공격 라인에 있다.

그림의 상황에서는 수비 라인에 4명, 미드필드 라인에 3명, 공격 라인에 3명의 선수가 있다.

경기 중에 일부 선수는 한 라인에서 다른 라인으로 이동한다. 이 문제에서는 수비와 미드필드 사이, 미드필드와 공격 사이에서 (양방향으로) 선수가 이동할 수 있다고 본다. 따라서 수비수로 배정된 선수는 공격 라인에 있을 수 없고, 공격수로 배정된 선수는 수비 라인에 있을 수 없다. 또한 감독의 지시에 따라 각 라인에서 다른 각 라인으로 이동한 선수는 최대 2명이다.

이 문제의 목표는 어떤 순간의 선수 위치가 주어졌을 때, 경기 중 이러한 배치가 생길 수 있었던 모든 포메이션을 찾는 프로그램을 작성하는 것이다.

입력

입력은 10개의 줄로 이루어진다. 각 줄에는 팀 선수 한 명의 좌표 x_i, y_i가 정수로 주어진다(0≤xi≤1200 \le x_i \le 120, xi≠40x_i \ne 40, xi≠80x_i \ne 80, 0≤yi≤800 \le y_i \le 80).

출력

첫 줄에는 팀이 사용할 수 있는 포메이션의 개수 k를 출력한다. 이어서 k줄에 각 포메이션을 임의의 순서로 출력한다. 예제 테스트의 데이터 형식을 따른다.

힌트

예제는 위의 그림에 해당한다.

예제1

  1. 예제 1

    입력
    97 0
    13 18
    2 6
    119 11
    42 21
    72 80
    75 78
    106 45
    22 67
    28 47
    
    예상 출력
    9
    2-5-3
    3-5-2
    3-4-3
    4-5-1
    4-4-2
    4-3-3
    5-4-1
    5-3-2
    5-2-3