로그인가입

카드 식의 최대와 최소

300점케이스 16출제 dongbinna
10월 30일에 올라온 문제입니다.

문제

수학 동아리에서 카드를 늘어놓아 식을 만드는 놀이를 한다.

숫자 카드가 N장 있고, 책상 위에 왼쪽부터 오른쪽으로 한 줄로 놓여 있다. 이 순서는 놀이가 끝날 때까지 바꾸지 않는다. 그리고 연산 카드가 N-1장 있는데, 더하기와 빼기와 곱하기와 나누기 네 종류이며 종류마다 몇 장인지가 정해져 있다.

연산 카드는 이웃한 두 숫자 카드 사이에 생기는 N-1개의 빈 자리에 한 장씩 끼워 넣는다. 가진 연산 카드는 한 장도 남기지 않고 모두 써야 한다. 같은 종류의 카드끼리는 서로 구분하지 않으므로, 어느 자리에 어느 종류가 들어가는지만 따지면 된다.

카드를 다 끼우면 하나의 식이 만들어진다. 이 식은 왼쪽부터 차례대로 계산한다. 곱하기와 나누기를 먼저 계산하는 규칙은 쓰지 않는다. 나눌 때는 몫의 소수점 아래를 버린다. 나누어지는 수가 음수인 경우에는 먼저 절댓값으로 나눈 뒤에 그 몫에 음수 부호를 붙인다. 숫자 카드에 적힌 수는 모두 1 이상이라서 0으로 나누는 일은 생기지 않는다.

연산 카드를 끼워 넣는 방법을 모두 따져 보았을 때, 만들 수 있는 식의 값의 최댓값과 최솟값을 계산하는 프로그램을 작성하여라.

예를 들어 N=3이고 숫자 카드가 다음의 표와 같이 놓여 있다고 해보자.

자리123
숫자 카드409934

그리고 연산 카드가 더하기 1장과 빼기 1장이라고 해보자. 끼워 넣는 자리는 두 곳이고 카드도 두 장이므로, 만들 수 있는 식은 다음의 두 가지다.

식계산 과정값
40 + 99 - 3440에 99를 더해 139, 139에서 34를 빼서 105105
40 - 99 + 3440에서 99를 빼서 -59, -59에 34를 더해 -25-25

따라서 이 예시에서 최댓값은 105이고 최솟값은 -25다. 만들 수 있는 식이 하나뿐이라면 최댓값과 최솟값이 같은 값이 된다.

입출력 예시

예시 1

입력

3
40 99 34
1 1 0 0

출력

105
-25

예시 2

입력

2
91 66
0 0 1 0

출력

6006
6006

예시 3

입력

6
1 2 3 4 5 6
2 1 1 1

출력

54
-24

입력 조건

  • 가장 먼저 숫자 카드의 수 N이 자연수로 주어진다. N은 2 이상 11 이하의 자연수다.

  • 이어서 왼쪽부터 놓여 있는 N장의 숫자 카드에 적힌 수가 한 줄에 공백으로 구분되어 차례대로 주어진다. 각 수는 1 이상 100 이하의 자연수다.

  • 이어서 연산 카드의 장수가 한 줄에 네 개의 수로 공백으로 구분되어 주어진다. 차례대로 더하기 카드, 빼기 카드, 곱하기 카드, 나누기 카드의 장수를 의미한다. 네 수의 합은 항상 N-1이며, 장수가 0인 종류가 있을 수 있다.

출력 조건

  • 첫 줄에 만들 수 있는 식의 값의 최댓값을 출력하고, 다음 줄에 최솟값을 출력한다. 두 줄 모두 하나의 수만 적는다. 값이 음수인 경우에는 음수 부호를 붙여 출력한다.

요구사항

  • 숫자 카드의 순서는 바꾸지 않습니다
  • 주어진 연산 카드를 한 장도 남기지 않고 모두 끼워 넣습니다
  • 식은 왼쪽부터 차례대로 계산하고, 곱하기와 나누기를 먼저 계산하지 않습니다
  • 나눌 때는 몫의 소수점 아래를 버리며, 음수는 절댓값으로 나눈 뒤 음수 부호를 붙입니다
  • 최댓값을 첫 줄에, 최솟값을 다음 줄에 출력합니다
  • 표준 입력으로 읽고 표준 출력으로 내보내는 프로그램을 짜야 합니다
  • 쓸 수 있는 말은 파이썬, 자바스크립트입니다
  • 메모리 제한은 256MB입니다. 브라우저에서는 재지 않고 적기만 합니다
  • 시간 제한은 출제자의 정답 코드를 같은 런타임에서 재서 정합니다
  • 이 문제는 프롬프트가 아니라 코드를 냅니다. 그 코드는 이 기기의 브라우저에서 돌고, 서버로는 나온 출력의 지문과 걸린 시간만 갑니다. 맞았는지는 서버가 정합니다. 실행 시간은 각자 기기가 적어 보내는 값이라, 코드와 기기 정보를 순위표에 같이 내걸어 둡니다.
  • 출력이 글자 하나까지 기대값과 같아야 합니다. 줄 안의 빈칸은 다른 글자와 똑같이 봅니다.
  • 케이스는 16개이고, 그 가운데 3개는 입력과 기대 출력을 함께 보여 줍니다. 나머지는 제출할 때만 쓰이고 화면에는 보여 주지 않습니다.
  • 케이스 16개를 전부 통과해야 해결입니다.
문제의 요구 사항을 잘 읽고 해결해 주세요. 단, 채점 과정을 건드려 통과한 것처럼 꾸미는 경우 적발 시 제재될 수 있습니다. 제출한 코드는 순위표에 함께 공개됩니다.

예시

공개 케이스 3개입니다. 채점에는 숨은 케이스가 함께 쓰입니다. 케이스 16개를 전부 통과해야 해결입니다.

입력
기대 출력
2
91 66
0 0 1 0
6006
6006
3
40 99 34
1 1 0 0
105
-25
6
1 2 3 4 5 6
2 1 1 1
54
-24

풀이

코드는 이 기기에서돕니다. 서버로는 나온 출력의 지문과 걸린 시간만 갑니다. 맞았는지는 서버가 정합니다.

0자1줄메모리 256MB (적어만 둡니다)기준 3.0ms

제출은 로그인 하셔야 됩니다. 공개 케이스로 돌려보는 것은 로그인 없이도 됩니다.

공개 케이스 3개로 돌려보기가 됩니다. 제출하면 숨은 케이스까지 돕니다.

이 문제를 푼 사람

아직 없습니다. 첫 번째가 되실 수 있습니다.