Skip to content

11507: 【原1507】配对

题目

题目描述

author: Unknown 原OJ链接:https://acm.sjtu.edu.cn/OnlineJudge-old/problem/1507

Description

给出2个序列 A={a[1],a[2],…,a[n]}, B={b[1],b[2],…,b[n]}, 从 A, B 中各选出 n 个元素进行一一配对(可以不按照原来在序列中的顺序),并使得所有配对元素差的绝对值之和最大。

Input Format

  • 第1行为1个整数n
  • 第2行包含n个整数,题目中的A序列。
  • 第3行包含n个整数,题目中的B序列。

Output Format

  • 一个数,最大配对

Sample Input

4
2 5 6 3
1 4 6 7

Sample Output

14

Hint

学习C++程序设计思想与方法 5.2.2排序/p81, 完成本次作业【1024 排序】后再完成此题

yyong119's solution

#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
int main() {
    int n;
    cin >> n;
    int a[10001], b[10001];
    for (int i = 1; i <= n; ++i) cin >> a[i];
    for (int i = 1; i <= n; ++i) cin >> b[i];
    sort(a + 1, a + n + 1);
    sort(b + 1, b + n + 1);
    long num = 0;
    for (int i = 1; i <= n; ++i) num += abs(a[i] - b[n + 1 - i]);
    cout << num << endl;
    return 0;
}