#include <stdio.h>
#include <deque>

int arr[50], ptr=0;

int main() {
    long long n, k;
    scanf("%lld %lld", &n, &k);

    std::deque<char> dq;

    if(k>=1<<(n/2-1)) printf("-1"); // 개수 : 2^(n/2-1)
    else {
        int ptr=0; // arr 길이 n/2-1
        long long mod=1<<(n/2-1);

        while(mod) { //2진수 만들기
            arr[ptr++]=k/mod;
            k%=mod;
            mod/=2;
        }

        for(int i=0; i<ptr; i++) {
            if(arr[i]==1) {
                while(!dq.empty()) {
                    printf("%c", dq.front());
                    dq.pop_front();
                }
                dq.push_back('(');
                dq.push_back(')');
            }
            else {
                dq.push_front('(');
                dq.push_back(')');
            }
        }
        while(!dq.empty()) {
            printf("%c", dq.front());
            dq.pop_front();
        }
    }
}

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: