set

Summary

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 1721    Accepted Submission(s): 803


Problem Description
Small W is playing a summary game. Firstly, He takes N numbers. Secondly he takes out every pair of them and add this two numbers, thus he can get N*(N - 1)/2 new numbers. Thirdly he deletes the repeated number of the new numbers. Finally he gets the sum of the left numbers. Now small W want you to tell him what is the final sum.
 

 

Input
Multi test cases, every case occupies two lines, the first line contain n, then second line contain n numbers a1, a2, ……an separated by exact one space. Process to the end of file.
[Technical Specification]
2 <= n <= 100
-1000000000 <= ai <= 1000000000
 

 

Output
For each case, output the final sum.
 

 

Sample Input
4 1 2 3 4 2 5 5
 

 

Sample Output
25 10
Hint
Firstly 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.
 

 

Source
http://acm.hdu.edu.cn/showproblem.php?pid=4989
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<map>
#include<set>
#include<list>
#include<vector>
#include<stack>
#include<queue>
#define ll long long
#define inf 0x3f3f3f3f;
using namespace std;

set<int>s;

int main(){
    int n,a[103];
    while(~scanf("%d",&n)){
        s.clear();
        for(int i=0;i<n;i++){
            scanf("%d",&a[i]);
        }
        for(int i=0;i<n;i++){
            for(int j=i+1;j<n;j++){
                s.insert(a[i]+a[j]);
            }
        }
        ll sum=0;
        set<int>::iterator ite1=s.begin();
        set<int>::iterator ite2=s.end();
        for(;ite1!=ite2;ite1++){
            sum+=*ite1;
        }
        printf("%lld\n",sum);
    }
    return 0;
}

 

posted @ 2019-05-06 21:19  jhjdsdsgd  阅读(129)  评论(0编辑  收藏  举报