ABC028_C

A < B < C < D < E
の入力に対して考えうる3つの和の中で3番目に大きい物を答えるという問題

#include <bits/stdc++.h>
using namespace std;
int main()
{
    priority_queue<int> pq;
    set<int> s;
    int a[5];
    for(int i=0;i<5;i++){
        cin>>a[i];
    }
    sort(a,a+5);
    do{
        int x = a[0]+a[1]+a[2];
        if(!s.count(x)){
            s.insert(x);
            pq.push(x);
        }
    }while(next_permutation(a,a+5));
    pq.pop();pq.pop();
    cout<<pq.top()<<endl;
    return 0;
    
}

と書いたが,より単純な方法があった.
最も大きいのはC+D+E
次に大きいのはB+D+E
3番目に大きいのはA+D+E or B+C+E