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

ぬいぐるみの整理 (Plush Toys)

설명

ある JOI 関係者は,おもちゃ屋で働いている.今日は,店内にあるぬいぐるみコーナーの整理をすることになった.

ぬいぐるみコーナーの棚には,N 個のぬいぐるみが左から右に一列に並べられている.棚は仕切りにより N 個の区画に区切られており,1 つの区画に 1 個のぬいぐるみを置く.このおもちゃ屋は合計 M 種類のぬいぐるみを売っており,それぞれ 1 から M までの番号が付けられている.棚に並べられた N 個のぬいぐるみは,それぞれこの M 種類のうちのいずれかである.また,それぞれの種類のぬいぐるみは,少なくとも 1 個は存在する.

見栄えを良くするため,同じ種類のぬいぐるみが全て連続して棚に置かれるように,ぬいぐるみを並べ替えたい.次のような方法で,ぬいぐるみを並べ替えることにした.

N 個のぬいぐるみのうちいくつかを選び,棚から取り出す.取り出さなかったぬいぐるみの位置は動かさない.

取り出したぬいぐるみを,好きな順に棚の空いている区画に戻していく.

並べ替えた後,同じ種類のぬいぐるみが全て連続して棚に置かれていなければならない.
並べ替えるために取り出すぬいぐるみの個数の最小値を求めるプログラムを作成せよ.

제약
입력 형식

入力は 1 + N 行からなる.

1 行目には 2 個の整数 N, M (1 ≦ N ≦ 100000, 1 ≦ M ≦ 20) が空白を区切りとして書かれており,ぬいぐるみが N 個あり,種類が M 種類あることを表す.

続く N 行のそれぞれには,1 以上 M 以下の整数が書かれている. N 行のうちの i 行目 (1 ≦ i ≦ N) に書かれた整数は,棚の左から i 番目の区画に置かれたぬいぐるみの種類を表す.各種類について,少なくとも 1 個のぬいぐるみが存在していることが保証される.

출력 형식

並べ替えるために取り出すぬいぐるみの個数の最小値を 1 行で出力せよ.

예제 1
입력
7 2
1
2
2
2
1
2
1
출력
2
문제 정보

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

출처 JOI 2017 Preliminary

평가 및 의견

ぬいぐるみの整理 (Plush Toys)

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

Log in to rate problems.

개별 의견

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

풀이 제출

ぬいぐるみの整理 (Plush Toys)

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