Game X
시간 제한1초메모리 제한512 MB
n과 k가 주어질 때, 절댓값이 모두 다른 0이 아닌 정수 n개 중 합이 양수인 쌍이 정확히 k개가 되도록 할 수 있는지 판정하고, 가능하면 곱이 양수인 쌍의 최댓값을 구한다.
문제
사람은 보드 게임을 너무 좋아한 나머지 직접 게임을 만드는 경우가 있다. Bob은 규칙이 너무 복잡한 게임을 하나 만들었는데, 여기서는 그 규칙의 아주 일부만 소개한다.
n+1명의 플레이어가 각각 파워 변화 카드를 하나씩 가지고 있다. 카드의 값은 양의 정수 또는 음의 정수이며, 절댓값이 서로 다르다. 예를 들어 값이 −4인 카드가 있다면 값이 4인 카드는 있을 수 없다. 값이 0인 카드는 없다.
플레이어 중 한 명이 목표 토큰을 받는데, 이는 나머지 n명의 플레이어가 그를 공격해야 함을 뜻한다.
이 게임에서 공격은 다음과 같이 진행된다. 무작위로 두 플레이어가 동시에 자신의 파워 변화 카드를 공개하고, 두 값의 곱이 목표 플레이어의 파워 값에 더해진다. (각 플레이어에게 파워 값이 있다는 사실을 언급하지 않았다.) 카드의 값은 양수일 수도 음수일 수도 있으므로 곱도 양수일 수도 음수일 수도 있고, 따라서 파워 값은 커질 수도 작아질 수도 있다. 물론 목표 플레이어는 자신의 파워 값을 키우고 싶어 한다.
새 게임을 시험해 보던 중 Bob이 목표 토큰을 받았다. 이 게임을 만든 사람인 Bob은, 규칙을 덧셈에서 곱셈으로 바꾸기 훨씬 전에 카드 값의 합이 양수인 플레이어의 비순서쌍이 정확히 k개 있었다는 사실을 어렴풋이 기억하고 있다. 이것이 지금 Bob의 파워 값을 키울 수 있는 플레이어의 최대 비순서쌍 개수를 구하는 데 도움이 될까?
입력
입력은 한 줄이며, 공백으로 구분된 두 정수 n과 k가 주어진다. (2 ≤ n ≤ 109, 0 ≤ k ≤ 1018)
출력
입력 데이터가 모순되는 경우, 즉 Bob이 개수를 잘못 기억해서 카드 값의 합이 양수인 플레이어의 비순서쌍이 정확히 k개 있을 수 없는 경우에는 −1을 출력한다.
그렇지 않으면, Bob의 파워 값을 키울 수 있는 플레이어의 비순서쌍 개수의 최댓값을 한 줄에 출력한다.