結果
問題 | No.1873 Bracket Swapping |
ユーザー |
|
提出日時 | 2021-12-22 23:58:26 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
RE
|
実行時間 | - |
コード長 | 917 bytes |
コンパイル時間 | 2,114 ms |
コンパイル使用メモリ | 194,936 KB |
最終ジャッジ日時 | 2025-01-27 05:46:07 |
ジャッジサーバーID (参考情報) |
judge4 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 RE * 1 |
other | AC * 2 RE * 25 |
ソースコード
#include <bits/stdc++.h> using namespace std; bool is_kakko(const string& S) { int sum = 0; for (const char& c : S) { if (c == '(') sum++; else sum--; if (sum < 0) return false; } return sum == 0; } int rec(string& S, int K) { if (K == 0) return is_kakko(S); int ans = 0; for (int i = 0; i < S.size(); i++) { for (int j = i + 1; j < S.size(); j++) { swap(S[i], S[j]); ans += rec(S, K - 1); swap(S[i], S[j]); } } return ans; } void check(long long a, int b) { const int inf = 1e9; int prod = 1; while (b) { if (prod * a >= inf) assert(false); if (b & 1) prod *= a; if (a * a >= inf) assert(false); a *= a; b >>= 1; } } int main() { string S; cin >> S; int K; cin >> K; check(S.size() * (S.size() - 1) / 2, K); cout << rec(S, K) << endl; }