心如止水
Je n'ai pas le temps
posts - 400,comments - 130,trackbacks - 0
对a[i]、b[i]排序之后,a[i]和b[n-i+1]配对最终获得的结果最大。
以下是我的代码:
#include<iostream>
#include
<stdlib.h>
#define maxn 10007
using namespace std;

void Qsort(long *a,long l,long r)
{
    
long i=l,j=r,m=a[(l+r)/2];
    
do{
        
while(a[i]<m) i++;
        
while(a[j]>m) j--;
        
if(i<=j)
        {
            
long t=a[i];a[i]=a[j];a[j]=t;
            i
++;j--;
        }
    }
while(i<=j);
    
if(l<j) Qsort(a,l,j);
    
if(i<r) Qsort(a,i,r);
}

long n,ans,a[maxn],b[maxn];

int main()
{
    cin
>>n;
    
for(long i=1;i<=n;i++)
        cin
>>a[i];
    
for(long i=1;i<=n;i++)
        cin
>>b[i];
    Qsort(a,
1,n);
    Qsort(b,
1,n);
    
    ans
=0;
    
for(long i=1;i<=n;i++)
        ans
+=abs(a[i]-b[n-i+1]);
    
    cout
<<ans<<endl;
return 0;
}
posted on 2010-10-18 16:02 lee1r 阅读(214) 评论(0)  编辑 收藏 引用 所属分类: 题目分类:基础/模拟

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理