题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4989
4 1 2 3 4 2 5 5
25 10HintFirstly small W takes any pair of 1 2 3 4 and add them, he will get 3 4 5 5 6 7. Then he deletes the repeated numbers, he will get 3 4 5 6 7, Finally he gets the sum=3+4+5+6+7=25.
代码如下:
//#pragma warning (disable:4786)
#include <cstdio>
#include <cmath>
#include <cstring>
#include <string>
#include <cstdlib>
#include <climits>
#include <ctype.h>
#include <queue>
#include <stack>
#include <vector>
#include <utility>
#include <deque>
#include <set>
#include <map>
#include <iostream>
#include <algorithm>
using namespace std;
#define INF 1e18
//typedef long long LL;
typedef __int64 LL;
int main()
{
int n;
LL a[7000], b[7000];
while(~scanf("%d",&n))
{
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
for(int i = 0; i < n; i++)
{
scanf("%I64d",&a[i]);
}
int l = 0;
for(int i = 0; i < n-1; i++)
{
for(int j = i+1; j < n; j++)
{
b[l++] = a[i]+a[j];
}
}
sort(b,b+l);
for(int i = 1; i < l; i++)
{
if(b[i] == b[i-1])
b[i-1] = 0;
}
LL sum = 0;
for(int i = 0; i < l; i++)
{
sum+=b[i];
}
printf("%I64d\n",sum);
}
return 0;
}
原文地址:http://blog.csdn.net/u012860063/article/details/39123681