Appleman has n cards. Each card has an uppercase letter written on it. Toastman must choose k cards from Appleman's cards. Then Appleman should give Toastman some coins depending on the chosen cards. Formally, for each Toastman's card i you should calculate how much Toastman's cards have the letter equal to letter on ith, then sum up all these quantities, such a number of coins Appleman should give to Toastman.
Given the description of Appleman's cards. What is the maximum number of coins Toastman can get?
The first line contains two integers n and k (1 ≤ k ≤ n ≤ 105). The next line contains n uppercase letters without spaces — the i-th letter describes the i-th card of the Appleman.
Print a single integer – the answer to the problem.
15 10 DZFDFZDFDDDDDDF
82
6 4 YJSNPI
4
In the first test example Toastman can choose nine cards with letter D and one additional card with any letter. For each card with D he will get 9 coins and for the additional card he will get 1 coin.
代码:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
int a[30];
char s[100100];
using namespace std;
bool cmp(int a,int b)
{
return a>b;
}
int main()
{
int n,k;
long long ans;
while(~scanf("%d%d",&n,&k))
{
memset(a,0,sizeof(a));
scanf("%s",s);
for(int i=0;i<n;i++)
{
a[s[i]-'A']++;
}
sort(a,a+30,cmp);
ans=0;
int t=0;
while(1)
{
if(k>=a[t])
{
ans+=(long long)a[t]*a[t];
k-=a[t];
t++;
}
else
{
ans+=(long long)k*k;
break;
}
if(t>=30)
break;
}
cout<<ans<<endl;
}
return 0;
}