Submission #608847

#TimeUsernameProblemLanguageResultExecution timeMemory
608847farukMatch (CEOI16_match)C++17
100 / 100
1546 ms2644 KiB
#include <bits/stdc++.h> #define pii pair<int, int> #define ll long long #define ld long double using namespace std; int n; string s; bool possible(stack<char> open, int idx) { for (int i = idx; i < n; i++) { if (!open.empty() && open.top() == s[i]) open.pop(); else open.push(s[i]); } return open.empty(); } int gaming_calc(char c, int endd) { stack<char> open; for (int i = endd; i >= 0; i--) { if (open.empty() && s[i] == c) return i; if (!open.empty() && open.top() == s[i]) open.pop(); else open.push(s[i]); if (open.empty() && s[i] == c) return i; } return -1; } int gaming[100001][30]; void tle_machine() { string t = s; sort(t.begin(), t.end()); for (int i = 0; i < n; i++) { char x; if (i == 0 || t[i] != t[i - 1]) x = t[i]; for (int j = n - 1; j >= 0; j--) gaming[j][x] = gaming_calc(x, j); } } string out; void recur(int strt, int e) { if (strt >= e) return; int mid = gaming_calc(s[strt], e); out[strt] = '(', out[mid] = ')'; recur(strt + 1, mid - 1); recur(mid + 1, e); } int main() { ios_base::sync_with_stdio(false); cin.tie(0); //freopen("match.in", "r", stdin); //freopen("match.out", "w", stdout); cin >> s; n = s.size(); if (!possible(stack<char>(), 0)) { cout << "-1\n"; return 0; } out = s; recur(0, n - 1); cout << out << "\n"; return 0; }

Compilation message (stderr)

match.cpp: In function 'void tle_machine()':
match.cpp:46:23: warning: array subscript has type 'char' [-Wchar-subscripts]
   46 |             gaming[j][x] = gaming_calc(x, j);
      |                       ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...