← Back to List

1038번: 감소하는 수 ↗

Solutions

C++14
522 B | 522 chars
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
typedef long long ll;
vector <ll> V;
ll N;
ll check[11];

void g(ll k) {
    ll ret = 0;
    for(int x=0; x<=k; x++) {
        ret*=10;
        ret+=check[x];
    }
    V.push_back(ret);
}

void dfs(int k,int prev) {
    for(int x = prev-1; x>-1; x--) {
        check[k] = x;
        g(k);
        dfs(k+1,x);
    }
}

int main() {
    dfs(0,10);
    sort(V.begin(),V.end());
    cin >> N;
    if(N>=V.size()) cout<<-1;
    else cout<<V[N];
}