Advertisement
albnayem

Untitled

Jul 13th, 2019
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.61 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define ll   long long
  4.  
  5. ll minimum_index(vector <ll> vec)
  6. {
  7.     ll min_value=INT_MAX,min_index=0;
  8.  
  9.     for (ll i=0;i<vec.size();i++)
  10.     {
  11.         if (min_value>vec[i]) min_value=vec[i],min_index=i;
  12.     }
  13.     return min_index;
  14. }
  15.  
  16. int main ()
  17. {
  18.     int test_case;
  19.     cin>>test_case;
  20.  
  21.     while (test_case--)
  22.     {
  23.         ll n,cnt=0;
  24.         cin>>n;
  25.  
  26.         vector <ll> vec(n);
  27.         vector <ll> :: iterator it;
  28.  
  29.         for (ll i=0;i<n;i++) cin>>vec[i];
  30.  
  31.         while (vec.size()>1)
  32.         {
  33.             ll min_index=minimum_index(vec);
  34.  
  35.             ll left_adjacent,right_adjacent;
  36.  
  37.             if (min_index==0)
  38.             {
  39.                 left_adjacent=vec.size()-1;
  40.                 right_adjacent=min_index+1;
  41.             }
  42.             else if (min_index==vec.size()-1)
  43.             {
  44.                 left_adjacent=min_index-1;
  45.                 right_adjacent=0;
  46.             }
  47.             else
  48.             {
  49.                 left_adjacent=min_index-1;
  50.                 right_adjacent=min_index+1;
  51.             }
  52.             it=vec.begin();
  53.             advance(it,min_index);
  54.  
  55.             if (vec[left_adjacent]<vec[right_adjacent])
  56.             {
  57.                 vec[left_adjacent]+=vec[min_index];
  58.                 cnt+=vec[left_adjacent];
  59.                 vec.erase(it);
  60.             }
  61.             else
  62.             {
  63.                 vec[right_adjacent]+=vec[min_index];
  64.                 cnt+=vec[right_adjacent];
  65.                 vec.erase(it);
  66.             }
  67.         }
  68.         cout<<cnt<<endl;
  69.     }
  70.  
  71.     return 0;
  72. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement