➤ Problem Link : 140C. New Year Snowmen
✅ C++ Solution :
#include<bits/stdc++.h> using namespace std; #define ll long long int #define pp pair<ll,ll> #define mp make_pair #define pb push_back int main() { int n; cin>>n; ll x; unordered_map<ll,ll> ms; for(int i=1;i<=n;i++) { cin>>x; ms[x]++; } priority_queue<pp> pq; for(auto p : ms) pq.push(mp(p.second,p.first)); pp a,b,c; vector< pair<ll,pair<ll,ll> > > ans; while(pq.size()>=3) { a=pq.top(); pq.pop(); b=pq.top(); pq.pop(); c=pq.top(); pq.pop(); ans.pb(mp(a.second,mp(b.second,c.second))); a.first--; b.first--; c.first--; if(a.first>0) pq.push(a); if(b.first>0) pq.push(b); if(c.first>0) pq.push(c); } cout<<ans.size()<<"\n"; ll mn,mx,mid; for(auto it : ans) { mn=min(it.first,min(it.second.first,it.second.second)); mx=max(it.first,max(it.second.first,it.second.second)); if(it.first!=mn && it.first!=mx) mid=it.first; else if(it.second.first!=mn && it.second.first!=mx) mid=it.second.first; else mid=it.second.second; cout<<mx<<" "<<mid<<" "<<mn<<"\n"; } }
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!!