Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- #define ll long long
- ll minimum_index(vector <ll> vec)
- {
- ll min_value=INT_MAX,min_index=0;
- for (ll i=0;i<vec.size();i++)
- {
- if (min_value>vec[i]) min_value=vec[i],min_index=i;
- }
- return min_index;
- }
- int main ()
- {
- int test_case;
- cin>>test_case;
- while (test_case--)
- {
- ll n,cnt=0;
- cin>>n;
- vector <ll> vec(n);
- vector <ll> :: iterator it;
- for (ll i=0;i<n;i++) cin>>vec[i];
- while (vec.size()>1)
- {
- ll min_index=minimum_index(vec);
- ll left_adjacent,right_adjacent;
- if (min_index==0)
- {
- left_adjacent=vec.size()-1;
- right_adjacent=min_index+1;
- }
- else if (min_index==vec.size()-1)
- {
- left_adjacent=min_index-1;
- right_adjacent=0;
- }
- else
- {
- left_adjacent=min_index-1;
- right_adjacent=min_index+1;
- }
- it=vec.begin();
- advance(it,min_index);
- if (vec[left_adjacent]<vec[right_adjacent])
- {
- vec[left_adjacent]+=vec[min_index];
- cnt+=vec[left_adjacent];
- vec.erase(it);
- }
- else
- {
- vec[right_adjacent]+=vec[min_index];
- cnt+=vec[right_adjacent];
- vec.erase(it);
- }
- }
- cout<<cnt<<endl;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement