fork download
  1. //shan61916
  2. #include <bits/stdc++.h>
  3. using namespace std;
  4. typedef long long ll;
  5. typedef unsigned long long ull ;
  6. typedef double dll ;
  7.  
  8. #define mp make_pair
  9. #define pb push_back
  10. #define ff first
  11. #define ss second
  12. #define IOS ios::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
  13. #define endl "\n"
  14. #define pll pair<ll, ll>
  15. #define all(x) x.begin(), x.end()
  16. #define vll vector<ll>
  17.  
  18. const ll inf = (ll)(1e17 + 17);
  19. const ll mod = (ll)(1e9 + 7);
  20.  
  21.  
  22. int main(){
  23. IOS
  24. #ifdef SHAN
  25. freopen("input.txt" , "r" , stdin);
  26. #endif
  27. ll T;
  28. cin >> T;
  29. while(T--) {
  30. ll n, k;
  31. cin >> n >> k;
  32. map<ll, ll> key;
  33. vll a(n);
  34. for(ll i = 0; i < n; i++) {
  35. cin >> a[i];
  36. key[a[i]]++;
  37. }
  38. set<pll, greater<pll>> st;
  39. ll extra = 0;
  40. for(ll i = 0; i < n; i++) {
  41. st.insert(mp(key[a[i]], a[i]));
  42. }
  43. bool foo = true;
  44. while(k > 0 and foo) {
  45. pll gv = *st.begin();
  46. if(gv.ff == 1) foo = false;
  47. st.erase(st.begin());
  48. k--;
  49. gv.ff--;
  50. extra++;
  51. st.insert(gv);
  52. }
  53. ll ans = ((extra)*(extra-1))/2;
  54. ll tot = extra;
  55. for(auto it: st) {
  56. ll xx = it.ff;
  57. ans+= (xx)*(tot);
  58. tot+= xx;
  59. }
  60. cout << ans << endl;
  61. }
  62. return 0;
  63. } //good night.
Success #stdin #stdout 0s 4388KB
stdin
1
5 3
1 1 1 1 1 
stdout
9