Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <sstream>
- #include <cstdio>
- #include <cstdlib>
- #include <cmath>
- #include <memory>
- #include <cctype>
- #include <string>
- #include <vector>
- #include <list>
- #include <queue>
- #include <deque>
- #include <stack>
- #include <map>
- #include <set>
- #include <algorithm>
- using namespace std;
- #define FOR(i,a,b) for(int (i) = (a); (i) < (b); ++(i))
- #define RFOR(i,a,b) for(int (i) = (a)-1; (i) >= (b); --(i))
- #define CLEAR(a) memset((a),0,sizeof(a))
- #define INF 1000000000
- #define PB push_back
- #define ALL(c) (c).begin(), (c).end()
- #define pi 2*acos(0.0)
- #define SQR(a) (a)*(a)
- #define MP make_pair
- #define MAX 10000
- typedef long long Int;
- int n;
- vector <int> A;
- int main()
- {
- cin >> n;
- FOR (i,0,n)
- {
- int a;
- cin >> a;
- A.PB(a);
- }
- int res = 0;
- while (!A.empty())
- {
- sort(ALL(A));
- if (A.size() == 1)
- {
- res += A[0];
- A.clear();
- }
- else
- if (A.size() == 2)
- {
- res += A[1];
- A.clear();
- }
- else
- if (A.size() == 3)
- {
- res += A[0] + A[1] + A[2];
- A.clear();
- }
- else
- {
- if (A[1]*2 + A[0] + A.back() < A[0] + A[0] + A[A.size()-1] + A[A.size()-2])
- {
- res += A[1]*2 + A[0] + A.back();
- A.pop_back();
- A.pop_back();
- }
- else
- {
- res += A[0] + A[0] + A[A.size()-1] + A[A.size()-2];
- A.pop_back();
- A.pop_back();
- }
- }
- }
- cout << res << endl;
- cin >> n;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement