---
# System prepended metadata

title: Lời giải bài ACM
tags: [CP Problemsetting]

---

# Lời giải bài ACM

## Tác giả: Lê Nguyễn Hữu An, T2124

## 1. Tóm tắt đề

Cho $2n$ ($1 \leq n \leq 4.10^5$) bài toán, để giải bài toán thứ $i$ cần $a_{i}$ giây nếu giao cho Tí làm, hoặc cần $b_{i}$ giây nếu giao cho Tèo làm.

Hãy tìm cách phân công các bài toán cho Tí và Tèo, mỗi người làm đúng $n$ bài sao cho tổng thời gian giải cả $2n$ bài là ít nhất.

In ra tổng thời gian ít nhất tìm được.

## 2. Lời giải

Gọi $p_{1}, p_{2}...p_{n}$ là số hiệu các bài toán mà Tí giải, $q_{1}, q_{2}...q_{n}$ là số hiệu các bài toán mà Tèo giải (Điều kiện: $\forall 1 \leq i, j \leq n: 1\leq p_{i}, q_{j} \leq2n$ và $p_{i}\neq q_{j}$).

Khi đó tổng thời gian để giải 2n bài là:
        $a_{p_{1}}+a_{p_{2}}+...+a_{p_{n}}+b_{q_{1}}+b_{q_{2}}+...+b_{q_{n}} = \sum_{i=1}^{n}a_{p_{i}} + \sum_{i=1}^{n}b_{q_{i}}$

**Nhận xét:** Ta luôn có $2a_{i} = a_{i} + b_{i} + (a_{i} - b_{i})$ và $2b_{i} = a_{i} + b_{i} - (a_{i} - b_{i}) \hspace{8pt}\forall 1 \leq i \leq n$

Do đó tổng (1) bằng với:
$^1/_2 \sum_{i=1}^{n}\left[a_{p_{i}} + b_{p_{i}} + (a_{p_{i}} - b_{p_{i}})\right]+ \frac{1}{2}\sum_{i=1}^{n}\left[a_{q_{i}} + b_{q_{i}} - (a_{q_{i}} - b_{q_{i}})\right]$

$= \ ^1/_2\left[\sum_{i=1}^{2n} (a_{i} + b_{i}) + \sum_{i=1}^{n}(a_{p_{i}} - b_{p_{i}}) - \sum_{i=1}^{n}(a_{q_{i}} - b_{q_{i}})\right]$
    
Dễ thấy để đạt được giá trị nhỏ nhất, ta cần phải tối thiểu hóa biểu thức:
\begin{equation}
\sum_{i=1}^{n}(a_{p_{i}} - b_{p_{i})} - \sum_{i=1}^{n}(a_{q_{i}} - b_{q_{i}})
\end{equation}

Có thể chọn p gồm n bài toán sao cho $a_{i}-b_{i}$ là nhỏ nhất, q gồm n bài toán sao cho $a_{i}-b_{i}$ là lớn nhất. Khi đó biểu thức (2) là nhỏ nhất.

Vậy, với mảng $dif: dif_{i}=a_{i}-b_{i}$ đã được sort theo thứ tự không giảm, tổng nhỏ nhất cần tìm là:
$^1/_2\left[\sum_{i=1}^{2n} (a_{i} + b_{i})+\sum_{i=1}^{n} dif_{i}-\sum_{i=n+1}^{2n}dif_{i}\right]$

**Độ phức tạp:** Ta cần sắp xếp một lần sort, do đó độ phức tạp có thể là $O(nlogn)$ $nếu \ dùng \ chia \ nhị \ phân$ hoặc $O(n + max{a})$ $nếu \ dùng \ counting \ sort$.
### Code mẫu: [Link](https://ideone.com/5YpN4T)