trang chủ / đề bài / dhbb23_clc_10_c

VinFast

Đề bài

Mô tả

VinFast là một Công ty khởi nghiệp trong lĩnh vực ô tô với sự hậu thuẫn của Vingroup, chính vì lẽ đó VinFast được thỏa sức thiết kế xe theo phương thức đầy mới lạ và táo bạo. Ngay từ lúc khởi đầu, mục tiêu của VinFast là tạo ra những chiếc xe đẳng cấp thế giới, mang bản sắc Việt Nam.

Hùng là nhân viên bán hàng của hãng xe VinFast, anh được giao bán N chiếc ô tô điện được sắp thành một hàng, mỗi xe có một màu thuộc trong K màu đánh số từ 1 đến K. Để tiện phân loại, Hùng muốn sắp xếp lại các xe này sao cho các xe cùng màu thì nằm cạnh nhau, như vậy Hùng sẽ thu được các đoạn liên tiếp gồm những chiếc xe cùng màu, mỗi màu chỉ thuộc vào đúng một đoạn. Thứ tự giữa các đoạn màu là tùy ý. Mỗi bước, Hùng chỉ được đổi chỗ hai chiếc xe đứng cạnh nhau.

Yêu cầu: Hãy giúp Hùng sắp xếp lại các xe ô tô sao cho số bước đổi chỗ thực hiện là nhỏ nhất.

Dữ liệu vào

Gồm nhiều test, mỗi test được mô tả bằng hai dòng:

  • Dòng 1: Ghi hai số nguyên dương N,K (2≤N≤106; 1≤K≤20).
  • Dòng 2: Ghi N số nguyên dương là màu của N chiếc xe ô tô theo thứ tự 1,2,…,N. Mỗi màu là một số nguyên trong đoạn [1,K] (không nhất thiết màu nào cũng xuất hiện).

Kết thúc dữ liệu bằng một dòng ghi hai số 0 0.

Dữ liệu ra

Với mỗi test ghi trên một dòng số nguyên: số lần đổi chỗ ít nhất tìm được.

Ràng buộc

  • 2≤N≤106, 1≤K≤20, màu của mỗi xe thuộc [1,K].
  • Mỗi file dữ liệu có không quá 3 test và tổng N của các test không quá 106.

Subtasks

  • Subtask 1 (10% số test): K=2, N≤20000.
  • Subtask 2 (20% số test): K=3, N≤106.
  • Subtask 3 (20% số test): K≤5, N≤20000.
  • Subtask 4 (30% số test): K≤10, N≤106.
  • Subtask 5 (20% số test): K≤20, N≤106.

Mọi test trong một file dữ liệu thỏa mãn điều kiện của cùng một subtask. Mỗi file dữ liệu có số điểm như nhau.

Ví dụ

Input Output Giải thích
8 3
1 1 2 1 2 3 2 3
5 3
3 2 1 3 2
0 0
2
3
Trong trường hợp thứ nhất cần sắp xếp lại thành 1 1 1 2 2 2 3 3 với 2 phép đổi chỗ (lần lượt: vị trí 3 đổi chỗ cho vị trí 4, vị trí 6 đổi chỗ cho vị trí 7). Trong trường hợp thứ hai cần sắp xếp lại thành 3 3 2 2 1 với 3 phép đổi chỗ (lần lượt: vị trí 3 đổi chỗ cho vị trí 4; vị trí 4 đổi chỗ cho vị trí 5; vị trí 2 đổi chỗ cho vị trí 3).
6 2
2 1 2 1 2 1
4 2
1 1 1 1
0 0
3
0
Test thứ nhất: xếp thành 1 1 1 2 2 2 cần 3 phép đổi chỗ, còn xếp thành 2 2 2 1 1 1 cần 6 phép. Test thứ hai: màu 2 không xuất hiện, các xe đã thành một đoạn nên không cần đổi chỗ.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0