➤ Problem Link : GERGOVIA
👉 Hint : Greedy approach
✅ C++ Solution :
#include<bits/stdc++.h> using namespace std; int main() { vector<pair<int,int> >v_pos; vector<pair<int,int> >v_neg; while(1) { v_pos.clear(); v_neg.clear(); int n,x; long long int ans=0; cin>>n; if(!n) break; for(int i=0;i<n;i++) { cin>>x; if(x>0) v_pos.push_back(make_pair(x,i)); else if(x<0) v_neg.push_back(make_pair(-x,i)); } int p=0,q=0; while(p<v_pos.size() && q<v_neg.size()) { if(v_pos[p].first>v_neg[q].first) { ans+=abs(v_pos[p].second-v_neg[q].second)*v_neg[q].first; v_pos[p].first-=v_neg[q].first; q++; } else if(v_pos[p].first<v_neg[q].first) { ans+=abs(v_pos[p].second-v_neg[q].second)*v_pos[p].first; v_neg[q].first-=v_pos[p].first; p++; } else { ans+=abs(v_pos[p].second-v_neg[q].second)*v_pos[p].first; p++;q++; } } cout<<ans<<endl; } }
Thank you for your patience reading. If you enjoyed this post, I’d be very grateful if you’d help it spread by emailing it to a friend, or sharing it on Whatsapp or Facebook.
😇Happy Learning!!