Language: C++

#include <algorithm>
#include <cstdio>
#include <iostream>
#include <map>
#include <math.h>
#include <queue>
#include <set>
#include <stack>
#include <vector>
using namespace std;
typedef long long int ll;
typedef long double ld;
#define rep(i,n) for(int i = 0; i < (n); ++i)
#define Sort(Array) sort(Array.begin(), Array.end())
#define Reverse(a) reverse(a.begin(), a.end())
#define out(ans) cout << ans << endl;
const int MOD = 1000000007;
const int INF = 2147483647;

//------------↓------------- M -------------- E ---------------- M --------------- O ---------------↓--------------//
// コンパイル 
// g++ -std=c++1z
//
// -------型変換--------
// int を string に変換
// string s = to_string(n);
// string を int に変換
// int n = stoi(s);
//
// -------二分探索---------
// k以上の値が最初に現れる時のイテレータ
// lower_bound(data.begin(), data.end(), k)
// kより大きい値が最初の現れる時のイテレータ O(logN)
// upper_bound(data.begin(), data.end(), k)
// kがdataに存在するかをtrue or falseで返す O(logN)
// binary_search(data.begin(), data.end(), k)
// 
//
//
//
//
//
// 
//------------↑------------- M -------------- E ---------------- M --------------- O ---------------↑--------------//






int main() {

    queue <ll> Queue;
    for (int i = 1; i <= 9; ++i) {
        ll a = i;
        Queue.push(a);
    }
    
    ll ans;
    int k; cin >> k;
    rep(i, k) {
        ll a = Queue.front();
        if (i == k - 1) ans = a;
        Queue.pop();
        
        if (a % 10 != 0) {
            Queue.push(a * 10 + a % 10 - 1);
        }
        Queue.push(a * 10 + a % 10);
        if (a % 10 != 9) {
            Queue.push(a * 10 + a % 10 + 1);
        }
    }
#include <algorithm>
#include <cstdio>
#include <iostream>
#include <map>
#include <math.h>
#include <queue>
#include <set>
#include <stack>
#include <vector>
using namespace std;
typedef long long int ll;
typedef long double ld;
#define rep(i,n) for(int i = 0; i < (n); ++i)
#define Sort(Array) sort(Array.begin(), Array.end())
#define Reverse(a) reverse(a.begin(), a.end())
#define out(ans) cout << ans << endl;
const int MOD = 1000000007;
const int INF = 2147483647;

//------------↓------------- M -------------- E ---------------- M --------------- O ---------------↓--------------//
// コンパイル 
// g++ -std=c++1z
//
// -------型変換--------
// int を string に変換
// string s = to_string(n);
// string を int に変換
// int n = stoi(s);
//
// -------二分探索---------
// k以上の値が最初に現れる時のイテレータ
// lower_bound(data.begin(), data.end(), k)
// kより大きい値が最初の現れる時のイテレータ O(logN)
// upper_bound(data.begin(), data.end(), k)
// kがdataに存在するかをtrue or falseで返す O(logN)
// binary_search(data.begin(), data.end(), k)
// 
//
//
//
//
//
// 
//------------↑------------- M -------------- E ---------------- M --------------- O ---------------↑--------------//






int main() {

    queue <ll> Queue;
    for (int i = 1; i <= 9; ++i) {
        ll a = i;
        Queue.push(a);
    }
    
    ll ans;
    int k; cin >> k;
    rep(i, k) {
        ll a = Queue.front();
        if (i == k - 1) ans = a;
        Queue.pop();
        
        if (a % 10 != 0) {
            Queue.push(a * 10 + a % 10 - 1);
        }
        Queue.push(a * 10 + a % 10);
        if (a % 10 != 9) {
            Queue.push(a * 10 + a % 10 + 1);
        }
    }

    out(ans);

    return 0;
}





    out(ans);

    return 0;
}






Compiler output:
a.cc: In function 'int main()':
a.cc:124:9: warning: empty parentheses were disambiguated as a function declaration [-Wvexing-parse]
  124 | int main() {
      |         ^~
a.cc:124:9: note: remove parentheses to default-initialize a variable
  124 | int main() {
      |         ^~
      |         --
a.cc:124:9: note: or replace parentheses with braces to value-initialize a variable
a.cc:124:12: error: a function-definition is not allowed here before '{' token
  124 | int main() {
      |            ^