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