💪

【チャレンジ記録】競プロ典型 90 問_2問目

2022/01/06に公開

※勉強中のため、考察など後ほど付け加える可能性があります。

問題

https://atcoder.jp/contests/typical90/tasks/typical90_b

考えたこと

  • nが小さいが、bit全探索までいけなかった
  • 順番が関係するため、高い位から値を判定していかなければならないことに気づかず、バグ取りに時間がかかってしまった。

解答

twitterを見てから解答した。

#include <bits/stdc++.h>
#include <atcoder/all>
#include <vector>
#include <cstdint>
#define FOR(i,l,r) for(int i=(l);i<(r);++i)
#define RFOR(i,l,r) for(int i=(l);i>=(int)(r);i--)
#define rep(i,n)  FOR(i,0,n)
#define rrep(i,n)  RFOR(i,n-1,0)

#define int long long
#define ll long long
using namespace std;
using namespace atcoder;
const ll MX = 1e6;
const ll inf = 1e13;
const int mod = 1000000007;

signed main() {
    int n;
    cin>> n;
    if(n%2==1) {
        return 0;
    }
    rep(i,1<<n-1) {
        int x = 0;
        rep(j,n) {
            int now = (i>>n-1-j)&1;
            if(now>0)x--;
            if(now==0)x++;
            if(x<0 || x>n/2) {
                break;
            }
        }
        if(x==0) {
            rep(j,n) {
                int now = (i>>n-1-j)&1;
                if(now>0) cout << ")";
                if(now==0) cout << "(";
            }
            cout << "" << endl;
        }
    }

    return 0;
}

Discussion