Submission #1118024

#TimeUsernameProblemLanguageResultExecution timeMemory
1118024vjudge1Match (CEOI16_match)C++17
37 / 100
391 ms524288 KiB
#include <bits/stdc++.h> using namespace std; #define SPEED ios_base::sync_with_stdio(0); cin.tie(NULL); cout.tie(NULL); #define ALL(x) x.begin(), x.end() #define intt long long #define pb push_back // #define endl "\n" const int sz = 3e6 + 5, L = 20; intt dp[sz][27]; bool valid(string& s) { stack<char>st; for(int i = 0; i < s.size(); i++) { if(!st.empty() && st.top() == s[i]) { st.pop(); } else{ st.push(s[i]); } } return st.empty(); } string ans(sz, 'a'); void rec(intt l, intt r, string s) { if(l < r) { intt pos = dp[r][s[l] - 'a']; // cout << l << " " << r << " " << pos << endl;; ans[l - 1] = '('; ans[pos - 1] = ')'; rec(l + 1, pos - 1, s); rec(pos + 1, r, s); } } void solve() { string s; cin >> s; int n = s.size(); if(!valid(s)) { cout << -1 << endl; return; } ans.resize(n); // cout << "n" << endl; s = '?' + s; bool ok = true; for(int i = 1; i <= n; i++) { for(int j = 0; j < 26; j++) { // cout << i << " " << s[i] << " " << char(j + 'a') << endl; if(s[i] == char('a' + j)) { // if(i == 2 && s[i] == 'b') cout << j << endl; dp[i][j] = i; } else { if(dp[i-1][s[i]-'a'] > 0) dp[i][j] = dp[dp[i-1][s[i] - 'a']-1][j]; } } } // for(int i = 1; i <= n + 1; i++) { // for(int j = 0; j < 26; j++) { // cout << dp[i][j] << " "; // } // cout << endl; // } // cout << "n" << endl; rec(1, n, s); // cout << "n" << endl; if(ok == false ) { cout << -1 << endl; } else { cout << ans << endl; } } int main() { SPEED; intt tst = 1; // cin >> tst; while (tst--) { solve(); } }

Compilation message (stderr)

match.cpp: In function 'bool valid(std::string&)':
match.cpp:16:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   16 |     for(int i = 0; i < s.size(); i++) {
      |                    ~~^~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...