题目
原题链接:A. Stages
题意
给n个字母,最少选k个。要求每次选的必须必前一个ascii码至少大2。问最小的字母ascii码累计值。若无法达成则输出-1。
代码
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,k;
char w[50];
cin>>n>>k;
cin>>w;
sort(w,w+n);
int minn = 0,tmp = 0;
for(int i=0;i<n && k>=1;i++){
if(w[i] > tmp+1){
minn+=w[i]-'a'+1;
tmp = w[i];
k--;
}
}
if(k>=1){
printf("-1\n");
}else{
printf("%d\n",minn);
}
return 0;
}
网友评论