P1019 配对

又一道acm的题
开始是部分ac,部分wa,最后一部分rte

  1. 首先是wa
    原因在于,我用一个很大的数表示最大,
    解决办法是排序后依次取数

  2. 最后是rte
    原因在于,我开的空间不够
    1000,实际需要10000,少了一个0

下面贴出代码

// 9_P1019 配对.cpp : 定义控制台应用程序的入口点。
//
/* P1019 配对 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 太原成成中学第2次模拟赛 第二道 描述 给出2个序列A={a[1],a[2],…,a[n]},B={b[1],b[2],…,b[n]},从A、B中各选出n个元素进行一一配对(可以不按照原来在序列中的顺序),并使得所有配对元素差的绝对值之和最大。 输入格式 输入的第1行为1个整数n 第2行包含n个整数,题目中的A序列。 第3行包含n个整数,题目中的B序列。 输出格式 一个数,最大配对 测试样例1 输入 4 2 5 6 3 1 4 6 7 输出 14 备注 3与6配对,2与7配对,5与4配对,6与1配对,绝对值之差和为14 对于10%的数据,有n≤20; 对于30%的数据,有n≤100; 对于50%的数据,有n≤1000; 对于100%的数据,有n≤10000;a[i],b[i]≤1000。 */
#include "stdafx.h"
#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;;
long a[100002], b[100002];
long n;

int main()
{
    cin >> n;
    for (long i = 0; i < n;i++)
    {
        cin >> a[i];
    }
    for (long i = 0; i < n; i++)
    {
        cin >> b[i];
    }
    sort(a, a + n);
    sort(b, b + n);
    long sum = 0;
    for (long i = 0; i < n; i++)
    {
        sum += abs(a[n - i - 1] - b[i]);
    }
    cout << sum << endl;
    return 0;
}

你可能感兴趣的:(ACM)