RiseOJ는 solved.ac와 제휴 관계가 없습니다. 티어 아이콘 © solved.ac. solved.ac
포럼
문제 R03753

Kolekcija

설명

Igor has a huge collection of folk hits on his computer, containing N songs numbered 1 to N.
The collection is so big that it is not possible to display all songs at once on his display. Because of this,
while a song is playing, only K consecutive songs from the collectionare displayed on the screen. Of
course, the K consecutive songs necessarily include the song currently playing.
When a song first appears on the display, the software needs to access its file on disk and read metadata
like artist and song name. This metadata is stored in the computer's memory so that, if the song
reappears on display, the file doesn't need to be opened again.
Your program will be given the songs Igor wants to listen to, in the order in which he wants to do it.
For each song, determine the interval of songs which will be displayed while it is playing, so that the
total number of files that need to be accessed on disk is the smallest possible.
Note: The solution may not be unique.

제약

An output which is not completely correct, but the first line (the least number of file to access) is
correct, will score 50% points for that test case.

입력 형식

The first line contains two integers N and K (\(1 \le K < N < 1\,000\,000\,000\)), the number of songs in the
collection and the number of songs displayed.
The second line contains the integer M (\(1 \le M \le 300\,000\)), the number of songs Igor will listen to.
The next M lines contain the indices of the songs Igor will listen to. All numbers will be between 1 and
N and no song will appear more than once.

출력 형식

Output should consist of \(M+1\) lines.
On the first line output the smallest possible number of files to access while playing Igor's playlist.
After this, for each song S, in order in which they are given, output a pair of integers A and B, meaning
that while song S is playing, songs A through B (inclusive) are displayed on screen. A and B must satisfy
the conditions \(1 \le A \le S \le B \le N\), and \(B - A+1 = K\).

예제 1
입력
10 3
5
4
5
8
7
6
출력
5
4 6
4 6
6 8
6 8
6 8
예제 2
입력
15 4
6
6
14
11
3
8
5
출력
10
3 6
11 14
11 14
3 6
5 8
3 6
예제 3
입력
1000 301
3
300
500
700
출력
401
300 600
350 650
400 700
문제 정보

생성자가 기록되지 않았습니다.

출처 COI 2008

평가 및 의견

Kolekcija

개요
출제자 난이도 Unrated 레이팅 미적용 의견 0 / 50 공개 집계 (커뮤니티 난이도, 주요 주제, 품질)는 의견이 충분히 모이면 공개됩니다.

Log in to rate problems.

개별 의견

아직 의견이 없습니다. 자격이 된다면 위 양식에서 가장 먼저 평가해 보세요.

풀이 제출

Kolekcija

게스트로 둘러보고 있습니다. 로그인하면 풀이를 제출하고 진행 상황을 확인할 수 있습니다. 로그인하고 제출하기
공개
C++20 Tab 들여쓰기 · Ctrl+/ 주석 토글 · Enter 자동 들여쓰기
1 1 1 0 공백: 4 · UTF-8