Advertisement
Guest User

Untitled

a guest
Aug 16th, 2011
912
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.45 KB | None | 0 0
  1. #include <iostream>  
  2. #include <sstream>  
  3. #include <cstdio>  
  4. #include <cstdlib>  
  5. #include <cmath>  
  6. #include <memory>  
  7. #include <cctype>  
  8. #include <string>  
  9. #include <vector>  
  10. #include <list>  
  11. #include <queue>  
  12. #include <deque>  
  13. #include <stack>  
  14. #include <map>  
  15. #include <set>  
  16. #include <algorithm>  
  17. using namespace std;
  18.  
  19. #define FOR(i,a,b) for(int (i) = (a); (i) < (b); ++(i))
  20. #define RFOR(i,a,b) for(int (i) = (a)-1; (i) >= (b); --(i))
  21. #define CLEAR(a) memset((a),0,sizeof(a))
  22. #define INF 1000000000
  23. #define PB push_back
  24. #define ALL(c) (c).begin(), (c).end()
  25. #define pi 2*acos(0.0)
  26. #define SQR(a) (a)*(a)
  27. #define MP make_pair
  28. #define MAX 10000
  29.  
  30. typedef long long Int;
  31.  
  32. int n;
  33. vector <int> A;
  34.  
  35. int main()
  36. {
  37.     cin >> n;
  38.     FOR (i,0,n)
  39.     {
  40.         int a;
  41.         cin >> a;
  42.         A.PB(a);
  43.     }
  44.  
  45.     int res = 0;
  46.  
  47.     while (!A.empty())
  48.     {
  49.         sort(ALL(A));
  50.  
  51.         if (A.size() == 1)
  52.         {
  53.             res += A[0];
  54.             A.clear();
  55.         }
  56.         else
  57.         if (A.size() == 2)
  58.         {
  59.             res += A[1];
  60.             A.clear();
  61.         }
  62.         else
  63.         if (A.size() == 3)
  64.         {
  65.             res += A[0] + A[1] + A[2];
  66.             A.clear();
  67.         }
  68.         else
  69.         {
  70.             if (A[1]*2 + A[0] + A.back() < A[0] + A[0] + A[A.size()-1] + A[A.size()-2])
  71.             {
  72.                 res += A[1]*2 + A[0] + A.back();
  73.                 A.pop_back();
  74.                 A.pop_back();
  75.             }
  76.             else
  77.             {
  78.                 res += A[0] + A[0] + A[A.size()-1] + A[A.size()-2];
  79.                 A.pop_back();
  80.                 A.pop_back();
  81.             }
  82.         }
  83.     }
  84.  
  85.     cout << res << endl;
  86.  
  87.     cin >> n;
  88.     return 0;
  89. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement