Submission details
Task:Bracket sequence
Sender:aalto25j_007
Submission time:2025-11-05 17:22:23 +0200
Language:C++ (C++20)
Status:READY
Result:
Test results
testverdicttime
#1ACCEPTED0.00 sdetails
#2ACCEPTED0.00 sdetails
#3ACCEPTED0.00 sdetails
#40.00 sdetails
#50.00 sdetails
#60.00 sdetails
#7ACCEPTED0.00 sdetails
#80.00 sdetails
#90.00 sdetails
#10ACCEPTED0.00 sdetails
#110.00 sdetails
#12ACCEPTED0.00 sdetails
#130.00 sdetails
#140.00 sdetails
#150.00 sdetails
#160.00 sdetails
#17ACCEPTED0.00 sdetails
#180.00 sdetails
#19ACCEPTED0.00 sdetails
#20ACCEPTED0.00 sdetails
#210.00 sdetails
#220.00 sdetails
#230.00 sdetails
#240.00 sdetails
#250.00 sdetails
#260.00 sdetails
#270.00 sdetails
#280.00 sdetails
#290.00 sdetails
#30ACCEPTED0.00 sdetails
#310.00 sdetails
#320.00 sdetails
#330.00 sdetails
#340.00 sdetails
#350.00 sdetails
#360.00 sdetails
#370.00 sdetails
#380.00 sdetails
#390.00 sdetails
#40ACCEPTED0.00 sdetails
#410.00 sdetails
#420.00 sdetails
#430.00 sdetails
#440.00 sdetails
#450.00 sdetails
#460.00 sdetails
#470.00 sdetails
#480.00 sdetails
#490.00 sdetails
#50ACCEPTED0.00 sdetails
#510.00 sdetails
#520.00 sdetails
#530.00 sdetails
#540.00 sdetails
#550.00 sdetails
#560.01 sdetails
#570.01 sdetails
#580.01 sdetails
#590.01 sdetails
#60ACCEPTED0.01 sdetails
#610.01 sdetails
#620.01 sdetails
#630.01 sdetails
#640.01 sdetails
#650.01 sdetails

Code

// clang-format off
#include <bits/stdc++.h>
#include <iostream>
using namespace std;
#ifdef DO_DBG
template<typename A, typename B> ostream& operator<<(ostream &os, const pair<A, B> &p) { return os << '(' << p.first << ", " << p.second << ')'; }
template<typename T_container, typename T = typename enable_if<!is_same<T_container, string>::value, typename T_container::value_type>::type> ostream& operator<<(ostream &os, const T_container &v) { os << '{'; string sep; for (const T &x : v) os << sep << x, sep = ", "; return os << '}'; }
void dbg_out() { cerr << endl; }
template<typename Head, typename... Tail> void dbg_out(Head H, Tail... T) { cerr << ' ' << H; dbg_out(T...); }
#define dbg(...) cerr << "(" << #__VA_ARGS__ << "):", dbg_out(__VA_ARGS__)
#define dout cerr
#define debug true
#else
#define dbg(...)
#define dout if (0) cerr
#define debug false
#endif
typedef long long ll; typedef unsigned long long ull; typedef long double ld;
template <typename T> using v = vector<T>; template <typename T> using us = unordered_set<T>; template <typename K, typename V> using p = pair<K,V>;
template <typename K, typename V> using um = unordered_map<K, V>; template <typename K, typename V> using p = pair<K, V>;
template <typename T> using pq = priority_queue<T>; template <typename T> using nl = numeric_limits<T>; template <typename T> using il = initializer_list<T>;
constexpr int MOD = 1e9 + 7; constexpr int INF = 1e9; constexpr ld EPS = 1e-9;
#define fr(i,a,b) for (size_t i = a; i < b; i++)
#define fastio ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin.exceptions(cin.failbit);
#define frr(i,a,b) for (size_t i = b-1; i >= a; i--)
#define frs(i,a,b) for (ll i = a; i < b; i++)
#define all(v) v.begin(), v.end()
#define rall(v) v.rbegin(), v.rend()
#define sq(x) ((x) * (x))
template <typename... Args> void read(Args&... args) { ((cin >> args), ...); }
#define d(...) int __VA_ARGS__; read(__VA_ARGS__);
#define dll(...) ll __VA_ARGS__; read(__VA_ARGS__);
#define dv(x, n) vector<int> x(n); for (int i = 0; i < n; i++) cin >> x[i];
#define dvll(x, n) vector<long long> x(n); for (int i = 0; i < n; i++) cin >> x[i];
#define dvd(x, n) vector<double> x(n); for (int i = 0; i < n; i++) cin >> x[i];
ll ipow(ll a,int b){ll r=1;for(;b;b>>=1,a*=a)if(b&1)r*=a;return r;}
template<class F>struct y_combinator{F f;template<class...Args>decltype(auto)operator()(Args&&...args)const{return f(*this,forward<Args>(args)...);}};
constexpr auto get_nums=[]<typename T>(T&&s){istringstream iss(forward<T>(s));return vector<int>{istream_iterator<int>{iss},{}};};
#define even(x) ((x)%2==0)
#define odd(x) ((x)%2!=0)
#define sz(s) ((ll)s.size())
// clang-format on

int main() {
  fastio;
  string s;
  getline(cin, s);
  auto n = sz(s);
  if (n <= 1) {
    cout << "-1\n";
    return 0;
  }
  // dp[i] is the longest regular bracket sequence that ends at i
  v<ll> dp(n);
  frs(i, 1, n) {
    // we need a closing paren at the end
    if (s[i] == ')') {
      // if the previous paren was opening, we just add 2
      if (s[i - 1] == '(') {
        dp[i] = (i - 2) >= 0 ? (dp[i - 2] + 2) : 2;
      } else {
        // the previous paren was closing
        // then we can check if we are enclosing another regular bracket
        // sequence
        auto enclosedStart = i - dp[i - 1] - 1;
        if (enclosedStart >= 0 && s[enclosedStart] == '(') {
          dp[i] =
              dp[i - 1] + 2 + ((enclosedStart > 0) ? dp[enclosedStart - 1] : 0);
        }
      }
    }
  }
  auto me = max_element(all(dp));
  if (*me > 1) {
    frs(i, dp.end() - me, dp.end() - me + *me) { cout << s[i + 1]; }
    cout << '\n';
  } else {
    cout << "-1\n";
  }

  // my first try, clearly does not work:
  // an regular bracket sequence has an equal amount of ( and )
  // going from left to right, there is always at least as much ( as )
  // so ()) is not valid.
  // ll lbr = 0;
  // ll rbr = 0;
  // size_t l = 0;
  // ll maxl = 0, maxr = 0;
  // fr(r, 0, s.size()) {
  //   dbg(l, r, lbr, rbr);
  //   if (s[r] == '(') {
  //     lbr++;
  //   } else if (s[r] == ')') {
  //     rbr++;
  //   }
  //   if (rbr > lbr) {
  //     while (rbr > lbr) {
  //       if (s[l] == '(') {
  //         lbr--;
  //       } else if (s[l] == ')') {
  //         rbr--;
  //       }
  //       l++;
  //       dbg(l);
  //     }
  //     if (l > r) {
  //       r = l - 1;
  //     }
  //   } else {
  //     if (r - l > maxr - maxl && lbr == rbr) {
  //       maxl = l;
  //       maxr = r;
  //     }
  //   }
  // }
  // if (maxl == 0 && maxr == 0) {
  //   cout << "-1\n";
  // } else {
  //   dbg(maxl, maxr);
  //   fr(i, maxl, maxr + 1) { cout << s[i]; }
  //   cout << '\n';
  // }
}

Test details

Test 1

Verdict: ACCEPTED

input
(

correct output
-1

user output
-1

Test 2

Verdict: ACCEPTED

input
))

correct output
-1

user output
-1

Test 3

Verdict: ACCEPTED

input
((

correct output
-1

user output
-1

Test 4

Verdict:

input
()

correct output
()

user output

Test 5

Verdict:

input
(()

correct output
()

user output
)

Test 6

Verdict:

input
()()

correct output
()()

user output
()

Test 7

Verdict: ACCEPTED

input
))))

correct output
-1

user output
-1

Test 8

Verdict:

input
())(

correct output
()

user output

Test 9

Verdict:

input
(()(

correct output
()

user output
(

Test 10

Verdict: ACCEPTED

input
)))))

correct output
-1

user output
-1

Test 11

Verdict:

input
())(()

correct output
()

user output

Test 12

Verdict: ACCEPTED

input
))(()(

correct output
()

user output
()

Test 13

Verdict:

input
()(())

correct output
()(())

user output
(())

Test 14

Verdict:

input
()(())

correct output
()(())

user output
(())

Test 15

Verdict:

input
()((((

correct output
()

user output

Test 16

Verdict:

input
(())(())((

correct output
(())(())

user output
(())((

Test 17

Verdict: ACCEPTED

input
)))((()(((

correct output
()

user output
()

Test 18

Verdict:

input
(()))(((((

correct output
(())

user output
((

Test 19

Verdict: ACCEPTED

input
())(()())(

correct output
(()())

user output
(()())

Test 20

Verdict: ACCEPTED

input
))))))))))

correct output
-1

user output
-1

Test 21

Verdict:

input
())(())(()

correct output
(())

user output
))((

Test 22

Verdict:

input
)((())(()(

correct output
(())

user output
(()(

Test 23

Verdict:

input
()(())()()

correct output
()(())()()

user output
(())()()b

Test 24

Verdict:

input
()(())((()

correct output
()(())

user output
((()°

Test 25

Verdict:

input
()((((((((

correct output
()

user output
Š

Test 26

Verdict:

input
((((((())))))))(((((((((()))))...

correct output
(((((())))))(((((((((()))))(((...

user output
((((())))))))(((((((((()))))))...

Test 27

Verdict:

input
)))((()((((((()()))(())(()(())...

correct output
((()((((((()()))(())(()(()))((...

user output
))(()(()))(()(()()))))(())))))...

Test 28

Verdict:

input
(()))((((((())(((()))))(())())...

correct output
(((())((()()(((((())()))())))(...

user output
()))))(())())())(()(())(((((((...

Test 29

Verdict:

input
())))))))(((((((((())))(()))))...

correct output
(((((((((())))(())))))((((((()...

user output
))))))))())()))((()(()))))((((...

Test 30

Verdict: ACCEPTED

input
))))))))))))))))))))))))))))))...

correct output
-1

user output
-1

Test 31

Verdict:

input
())(())(()()()(()()()))((())((...

correct output
(())(()()()(()()()))((())(((((...

user output
)(((((())))())((((()()()())))(...

Test 32

Verdict:

input
(((((((((()))))))))((((((((())...

correct output
((((((((()))))))))

user output
)(((()))((())(()(

Test 33

Verdict:

input
()(())()()()(((((())))(((()())...

correct output
((((())))(((()()))((())(())())...

user output
)()(((((()()(((()())(()(((()((...

Test 34

Verdict:

input
()(())((()))(((())))((((()))))...

correct output
()(())((()))(((())))((((()))))...

user output
(((())))((((()))))(((((())))))...
Truncated

Test 35

Verdict:

input
()(((((((()(((((((((()())())))...

correct output
()(((((((()(((((((((()())())))...

user output
)()))))())()))((()()()())))()(...

Test 36

Verdict:

input
((((((((((((())))))))))))))))(...

correct output
((((((((((((((()))))))))))))((...

user output
((((((((((())))))))))))))))(((...
Truncated

Test 37

Verdict:

input
)))((()((((((()()))(())(()(())...

correct output
((()((((()(()((()(())()((()())...

user output
)))(())))))()(((())()())()()((...

Test 38

Verdict:

input
(()))((((((())(((()))))(())())...

correct output
((((((())(((()))))(())())())((...

user output
()()(((((())()))())))((()))))(...
Truncated

Test 39

Verdict:

input
(()))))))))))))))(((((((((((((...

correct output
(((((((((((((((((()))))))((())...

user output
)()))))(((((())(())))))))))(((...

Test 40

Verdict: ACCEPTED

input
))))))))))))))))))))))))))))))...

correct output
-1

user output
-1

Test 41

Verdict:

input
())(())(()()()(()()()))((())((...

correct output
(())(()()()(()()()))((())(((((...

user output
))()((())()(()()()(()((())(())...

Test 42

Verdict:

input
))))(((((((((((((())))))))))))...

correct output
((((((((((((()))))))))))))

user output
))))((((())))(((()))((())(

Test 43

Verdict:

input
()(())()()()(((((())))(((()())...

correct output
()()(((()())(()(((()(()(()(()(...

user output
((()()(((()())(()(((()(()(()((...

Test 44

Verdict:

input
()(())((()))(((())))((((()))))...

correct output
()(())((()))(((())))((((()))))...

user output
((((()))))(((((())))))((((((()...
Truncated

Test 45

Verdict:

input
()(((((((()(((((((((()())())))...

correct output
()(((((((()(((((((((()())())))...

user output
(()((()((()))()))(((()))((()((...

Test 46

Verdict:

input
((((((((((((((((((((((((((((((...

correct output
((((((((((((((((((((((((((((((...

user output
))))))))))))))))))))))))))))))...
Truncated

Test 47

Verdict:

input
)))((()((((((()()))(())(()(())...

correct output
(((())()((()))()())((((((()(()...

user output
)((()(())()((()()))())()(()())...
Truncated

Test 48

Verdict:

input
(()))((((((())(((()))))(())())...

correct output
((()))(()()((()()((((()()()(()...

user output
))))((()))))())(()(()(()()()))...
Truncated

Test 49

Verdict:

input
(((((((())))))))))))))))))))))...

correct output
((((((((((((((((((((((((((((((...

user output
(())))))(((((((((())))))))))))...
Truncated

Test 50

Verdict: ACCEPTED

input
))))))))))))))))))))))))))))))...

correct output
-1

user output
-1

Test 51

Verdict:

input
())(())(()()()(()()()))((())((...

correct output
(((()((((((()(((((()(((()(((()...

user output
(()((())))()()()))((()))))(())...
Truncated

Test 52

Verdict:

input
(((((((())))))))))))))))))))))...

correct output
((((((((((((((((((((((((((((((...

user output
(((((((()))))))))((((((((())))...

Test 53

Verdict:

input
()(())()()()(((((())))(((()())...

correct output
()(())()()()(((((())))(((()())...

user output
)()((())))()(())()()))()((()((...
Truncated

Test 54

Verdict:

input
()(())((()))(((())))((((()))))...

correct output
()(())((()))(((())))((((()))))...

user output
))(((())))((((()))))(((((())))...
Truncated

Test 55

Verdict:

input
()(((((((()(((((((((()())())))...

correct output
(((())((())(())(((()(()()(()()...

user output
))))()())))())(((()(()((()))()...
Truncated

Test 56

Verdict:

input
((((((((((((((((((((((((((((((...

correct output
((((((((((((((((((((((((((((((...

user output
))))))))))))))))))))))))))))))...
Truncated

Test 57

Verdict:

input
)))((()((((((()()))(())(()(())...

correct output
(((()))(())(())(((((()())()(()...

user output
)((()())((()))())()((()))((())...
Truncated

Test 58

Verdict:

input
(()))((((((())(((()))))(())())...

correct output
(()()(()((()(((()(((()()()()((...

user output
()())(()()(()))())(())()((()))...
Truncated

Test 59

Verdict:

input
((((((((((((((((((((((((((((((...

correct output
((((((((((((((((((((((((((((((...

user output
))))))))))))))))))))))))))))))...
Truncated

Test 60

Verdict: ACCEPTED

input
))))))))))))))))))))))))))))))...

correct output
-1

user output
-1

Test 61

Verdict:

input
())(())(()()()(()()()))((())((...

correct output
(()(()()()(()())(())((((((()((...

user output
((((()()())(())()))()()((())()...
Truncated

Test 62

Verdict:

input
))))))))))))))))))))))))))))))...

correct output
((((((((((((((((((((((((((((((...

user output
((((((((((((((((()))))))))))))...
Truncated

Test 63

Verdict:

input
()(())()()()(((((())))(((()())...

correct output
(()()((((())()()())())))((())(...

user output
)))))((()()))))()))(()(()((()(...
Truncated

Test 64

Verdict:

input
()(())((()))(((())))((((()))))...

correct output
()(())((()))(((())))((((()))))...

user output
(((((((((((((((((((((())))))))...
Truncated

Test 65

Verdict:

input
()(((((((()(((((((((()())())))...

correct output
()(((((()()))()))()(())(((()((...

user output
)))())((((()))(()()))(()(((()(...
Truncated