PlayerUnknown's Battlegrounds
시간 제한1.5초메모리 제한256 MB
1부터 n·m까지의 순열이 채워진 n×m 격자에서 최솟값이 x인 부분 격자의 개수를 모든 x에 대해 구한다.
문제
리카는 PUBG(PlayerUnknown's Battlegrounds)를 하면서 게임에서 이기지 못했다. 그래서 이번에는 몇 가지 기술을 쓰기로 했다. 기술 덕분에 리카는 이제 게임에 있는 모든 플레이어의 위치를 분명하게 볼 수 있다.
게임의 맵은 크기의 격자로 나타낼 수 있다. 리카는 적의 활약을 바탕으로 전투력을 평가하는 소프트웨어를 사용한다. 지금 각 칸에는 적이 정확히 하나씩 있고, 모든 적의 전투력은 부터 까지의 정수를 한 번씩 사용한 순열을 이룬다. 리카는 아직 실력이 부족하기 때문에 항상 가장 약한 적에게 관심을 둔다(적의 전투력이 작을수록 약한 적이다).
행 열의 칸을 라고 쓰자. 부분 격자는 로 정의되며, 여기서 이고 이다. 부분 격자 자체는 이고 인 칸 의 집합이다. 두 부분 격자 와 는 일 때에만 같은 부분 격자이다.
리카는 부분 격자 안에서 가장 약한 적의 전투력이 인 부분 격자의 개수를 알고 싶어 한다. 각각에 대한 답을 구해 리카를 도와주자.
입력
입력의 첫째 줄에는 정수 과 이 주어진다().
그다음 개의 줄이 주어진다. 그중 번째 줄에는 개의 정수가 주어지고, 번째 정수는 에 있는 적의 전투력이다. 값들은 부터 까지의 정수를 한 번씩 사용한 순열을 이룬다.
출력
개의 줄을 출력한다. 각 줄에는 정수 하나가 들어간다.
번째 줄의 정수는 에 대한 답이다.