题目链接: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