Advertisement
Rohit4Pal

Untitled

Jul 2nd, 2021
973
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.81 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. #define ff              first
  5. #define ss              second
  6. #define ll              long long
  7. #define pb              push_back
  8. #define mp              make_pair
  9. #define pii             pair<int,int>
  10. #define vi              vector<int>
  11. #define mii             map<int,int>
  12. #define pqb             priority_queue<int>
  13. #define pqs             priority_queue<int,vi,greater<int> >
  14. #define setbits(x)      __builtin_popcountll(x)
  15. #define zrobits(x)      __builtin_ctzll(x)
  16. #define mod             1000000007
  17. #define inf             1e18
  18. #define ps(x, y)         fixed<<setprecision(y)<<x
  19. #define mk(arr, n, type)  type *arr=new type[n];
  20. #define w(x)            int x; cin>>x; while(x--)
  21. #define pw(b, p)         pow(b,p) + 0.1
  22.  
  23. void fastIO() {
  24.     ios_base::sync_with_stdio(false);
  25.     cin.tie(NULL);
  26. }
  27.  
  28. int main() {
  29.  
  30.     fastIO();
  31.     w(t){
  32.        
  33.         int n;cin>>n;
  34.         vi arr(n);
  35.         for(int &i:arr)     cin>>i;
  36.        
  37.         //find (num,freq) pair  
  38.         mii myMap;
  39.         for(int i:arr)
  40.             myMap[i]++;
  41.        
  42.         //find max freq  
  43.         int maxFreq =0;
  44.         for(auto i:myMap){
  45.             if(i.ss>maxFreq){
  46.                 maxFreq=i.ss;
  47.             }
  48.         }
  49.        
  50.         vi res;
  51.         //find how many numbers have the same maxFreq
  52.         for(auto i:myMap){
  53.             if(i.ss==maxFreq)
  54.                 res.pb(i.ff);
  55.         }
  56.        
  57.         ll totalDiff=INT_MAX,tempDiff=0;
  58.        
  59.         //for every such x , find diff and comapre
  60.         for(int x:res){
  61.            
  62.             tempDiff=0;
  63.             for(auto i:myMap)
  64.                 tempDiff+=abs(i.ff - x)*i.ss;
  65.             totalDiff=min(totalDiff,tempDiff);
  66.         }
  67.         cout<<totalDiff<<"\n";
  68.     }
  69.     return 0;
  70. }
  71.  
  72.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement