PROBLEM_A: URAL 2024 Adventure Time

来源:互联网 发布:淘宝达人怎么介绍 编辑:程序博客网 时间:2024/06/05 00:39
/*PROBLEM A : "UNSOLVED" *//*TIME : ________________*/#include "cstdio"#include "cstring"#include "cctype"#include "algorithm"#include "cmath"#include "vector"using namespace std;#define Inc(i, a, b) for(int i = a; i < b; i++)#define Dec(i, a, b) for(int i = a; i > b; i--)#define Mem(a) memset(a, 0, sizeof(a))#define Pii pair<int, int> #define Pdd pair<double, double>#define Cin scanf#define Put printf#define CIN(a) scanf("%d", &a)#define CII(a, b) scanf("%d%d", &a, &b)#define CIS(a) scanf("%s", a)#define PUT(a) printf("%d\n", a) #define PII(a, b) printf("%d %d\n", a, b)#define PUS(a) printf("%s\n", a)#define Pub push_back#define Mpi make_pair#define ll long long#define maxn 100005#define pi acos(-1)#define eps 1e-10char  st[maxn];int n, k;int is[27][2];struct node {int xc, no;} ch[27];bool comp(node a, node b) {return a.no > b.no;}int C(int a, int b) {int sum = 1;Inc(i, 0, b) sum *= (a - i), sum /= i + 1;return sum;}int main() {while(~Cin("%s%d", st, &k)) {n = strlen(st);Mem(is), Mem(ch);Inc(i, 0, 26) ch[i].xc = i, ch[i].xc = 0;ch[26].no = -1;Inc(i, 0, n) ch[st[i] - 'a'].no++;sort(ch, ch + 26, comp);int tmp = 1, num = 1;Inc(i, 1, 27) {if(ch[i].no == ch[i - 1].no) tmp++;else {is[num][0] = tmp, tmp = 1;is[num++][1] = ch[i - 1].no;}if(ch[i].no == 0) break;}int it[27][2];Mem(it);Inc(i, 1, 27) {it[i][0] += it[i - 1][0] + is[i][0];it[i][1] += it[i - 1][1] + is[i][0] * is[i][1]; }bool flag = 0;Inc(i, 1, 27) {if(it[i][0] >= k) {int t = k - is[i - 1][0];PII(it[i - 1][1] + t * is[i][1], C(is[i][0], t));flag = 1;break;}if(is[i][0] == 0) break;}if(!flag) PII(it[26][1], 1);}}

0 0
原创粉丝点击