fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int main()
  4. {
  5. int t;
  6. cin>>t;
  7. while(t--)
  8. {
  9. char s[100001];
  10. long int k, a[26]={0}, i, start, end, count_end=1, count_start=1, ans=0;
  11. cin>>s>>k;
  12. sort(s,s+strlen(s));
  13. for(i=0;i<strlen(s);i++)
  14. a[s[i]-97]++;
  15. sort(a,a+26);
  16. i=0;
  17. while(a[i]==0 && i<=25)
  18. i++;
  19. start=i;
  20. end=25;
  21. while(a[end]-a[start]>k && start<end)
  22. {
  23. while(a[start]==a[start+1])
  24. {
  25. start++;
  26. count_start++;
  27. }
  28. while(a[end]==a[end-1])
  29. {
  30. end--;
  31. count_end++;
  32. }
  33. if(a[start]*count_start>(a[end]-a[start]-k)*count_end)
  34. {
  35. ans+=(a[end]-a[start]-k)*count_end;
  36. end--;
  37. }
  38. else
  39. {
  40. ans+=a[start]*count_start;
  41. start++;
  42. }
  43. count_start=1;
  44. count_end=1;
  45. }
  46.  
  47. cout<<ans<<endl;
  48. }
  49. return 0;
  50. }
Success #stdin #stdout 0s 15240KB
stdin
4
glaciological 1
teammate 0
possessions 3
defenselessness 3
stdout
0
0
1
2