小蓝对一个数的数位之和很感兴趣,今天他要按照数位之和给数排序。

当两个数各个数位之和不同时,将数位和较小的排在前面,当数位之和相等时,将数值小的排在前面。

例如,数位排序(2023寒假每日一题 9)_算法 排在 数位排序(2023寒假每日一题 9)_算法_02 前面,因为 数位排序(2023寒假每日一题 9)_算法 的数位之和是 数位排序(2023寒假每日一题 9)_算法_04,小于 数位排序(2023寒假每日一题 9)_算法_02 的数位之和 数位排序(2023寒假每日一题 9)_数位_06

又如,数位排序(2023寒假每日一题 9)_算法_04 排在 数位排序(2023寒假每日一题 9)_算法 前面,因为它们的数位之和相同,而 数位排序(2023寒假每日一题 9)_算法_04 小于 数位排序(2023寒假每日一题 9)_算法

给定正整数 数位排序(2023寒假每日一题 9)_算法_11,请问对 数位排序(2023寒假每日一题 9)_c++_12数位排序(2023寒假每日一题 9)_数位_13 采用这种方法排序时,排在第 数位排序(2023寒假每日一题 9)_快速选择_14

输入格式
输入第一行包含一个正整数 数位排序(2023寒假每日一题 9)_数位_13

第二行包含一个正整数 数位排序(2023寒假每日一题 9)_快速选择_14

输出格式
输出一行包含一个整数,表示答案。

数据范围
对于 数位排序(2023寒假每日一题 9)_算法_17 的评测用例,数位排序(2023寒假每日一题 9)_算法_18
对于 数位排序(2023寒假每日一题 9)_算法_19 的评测用例,数位排序(2023寒假每日一题 9)_快速选择_20
对于所有评测用例,数位排序(2023寒假每日一题 9)_数位_21

输入样例:

13
5

输出样例:

3

样例解释
数位排序(2023寒假每日一题 9)_c++_12数位排序(2023寒假每日一题 9)_数位_06 的排序为:数位排序(2023寒假每日一题 9)_排序_24

数位排序(2023寒假每日一题 9)_数位_25 个数为 数位排序(2023寒假每日一题 9)_算法_26


#include<iostream>
#include<algorithm>

#define x first
#define y second

using namespace std;

const int N = 1000010;

typedef pair<int, int> PII;

int n, m;
PII a[N];

int main(){
    
    cin >> n >> m;
    int b, c;
    for(int i = 1; i <= n; i++) {
        b = i, c = 0;
        while(b) c += b % 10, b /= 10;
        a[i].x = c, a[i].y = i;
    }
    sort(a, a + n + 1);
    cout << a[m].y << endl;
    
    return 0;
}