아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

그래서 나는 사진을 그만두었다

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

요약
학생 N명을 줄 세울 때 c_i*(왼쪽 인원) + a_i*(오른쪽 인원)의 합을 최소화하고 최대화하는 배치를 구하고 그 개수를 센다.
난이도

보통10점 중 6점

유형
정렬, 그리디, 수학, 조합론
정답자
아직 제출이 없습니다

문제

종경이는 사진 영상과 과학 영상 과목에서 사진을 찍는 과제를 받았다.

종경이는 정보과학세미나2를 수강하는 학생 NN명을 왼쪽부터 오른쪽으로 일렬로 줄 세워 사진을 찍으려고 한다. 정보과학세미나2를 수강하는 학생은 모두 정보과학을 사랑하는 학생이기에 반드시 Codeforces 레이팅과 Atcoder 레이팅을 가지고 있다. 각 학생은 11부터 NN까지의 번호를 가지고 있으며, 학생 ii의 Codeforces 레이팅과 Atcoder 레이팅은 각각 두 정수 c_ic\_i와 a_ia\_i로 표현된다.

종경이가 사진 과목에서 공부한 내용에 따르면, NN명의 학생이 왼쪽에서 오른쪽으로 일렬로 서서 사진을 찍을 때 학생 ii의 인물 점수는 c_i×l_i+a_i×r_ic\_i \times l\_i + a\_i \times r\_i로 정의된다. 이때 l_il\_i는 ii번 학생의 왼쪽에 있는 사람의 수이고, r_ir\_i는 ii번 학생의 오른쪽에 있는 사람의 수이다. 사진 점수는 사진에 등장하는 NN명의 인물 점수를 모두 합한 값으로 정의된다.

종경이는 사진 점수로 가능한 값 중 최솟값과 최댓값, 또 최솟값과 최댓값을 가지도록 학생들이 줄을 서는 방법이 몇 가지인지 알고 싶어 했다. 하지만 종경이는 가능한 모든 배열을 시도해 보며 N!N!장의 사진을 모두 찍다가 지쳐서 사진을 찍는 것을 그만두었고 과학 영상과 사진 영상 과목을 재수강할 위기에 처했다. 여러분이 종경이를 도와주자.

입력

첫째 줄에 NN이 주어진다.

둘째 줄부터 N+1N + 1번째 줄까지 (i+1)\left( i + 1 \right)번째 줄에 c_ic\_i, a_ia\_i가 공백을 사이에 두고 주어진다.

출력

첫째 줄에 사진 점수의 최솟값과 사진 점수가 최솟값이 되게 줄을 서는 방법의 수를 공백을 사이에 두고 출력한다.

둘째 줄에 사진 점수가 최솟값이 되도록 학생들이 줄을 서는 방법 x_1,x_2,⋯ ,x_Nx\_1, x\_2, \cdots, x\_N을 공백을 사이에 두고 출력한다. 쉼표는 출력하지 않는다. 왼쪽으로부터 ii번째에 학생 x_ix\_i가 선다는 것을 의미한다. (1≤i≤N)(1 \le i \le N)

셋째 줄에 사진 점수의 최댓값과 사진 점수가 최댓값이 되게 줄을 서는 방법의 수를 공백을 사이에 두고 출력한다.

넷째 줄에 사진 점수가 최댓값이 되도록 학생들이 줄을 서는 방법 y_1,y_2,⋯ ,y_Ny\_1, y\_2, \cdots, y\_N을 공백을 사이에 두고 출력한다. 쉼표는 출력하지 않는다. 왼쪽으로부터 ii번째에 학생 y_iy\_i가 선다는 것을 의미한다. (1≤i≤N)(1 \le i \le N)

줄을 서는 방법의 수는 너무 많을 수 있으니 998,244,353998\\,244\\,353으로 나눈 나머지를 출력한다.

사진 점수가 최솟값 또는 최댓값이 되게 하는 방법이 여러 가지 있다면, 그중 어떤 것을 출력해도 좋다.

제한

  • 1≤N≤100,0001 \le N \le 100\\,000
  • −108≤c_i,a_i≤108-10^8 \le c\_i, a\_i \le 10^8
  • 주어지는 모든 수는 정수이다.

예제1

  1. 예제 1

    입력
    3
    1 0
    0 -1
    1 -1
    
    예상 출력
    -1 2
    3 1 2
    1 2
    1 2 3