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 
#include 
#include 
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;
}

你可能感兴趣的:(P1019 配对)