Submission #96619

#TimeUsernameProblemLanguageResultExecution timeMemory
96619josiftepeparentrises (BOI18_parentrises)C++14
100 / 100
239 ms111492 KiB
#include <bits/stdc++.h> using namespace std; int dp[305][305][305]; const int MOD = 1e9 + 7; int rek(int at, int open, int closed){ if(at == 0){ if(closed == 0){ return 1; } return 0; } if(dp[at][open][closed] != -1){ return dp[at][open][closed]; } int ret = 0; ret += rek(at - 1, open + 2, closed + 1); if(open > 0){ ret += rek(at - 1, open - 1, max(closed - 2, 0)); } return dp[at][open][closed] = ret % MOD; } void solve(string s){ string ret = s; for(int i = 0; i < s.size(); i ++){ ret[i] = '?'; } stack<int> st; int cnt = 0; for(int i = 0; i < (int)s.size(); i ++){ if(s[i] == '('){ ++cnt; ret[i] = 'G'; } else{ if(cnt == 0){ if(st.empty()) { cout << "impossible\n"; return; } ret[st.top()] = 'R'; ret[i] = 'B'; st.pop(); } else{ cnt --; ret[i] = 'G'; st.push(i); } } } stack<int> st2; cnt = 0; for(int i = (int)s.size() - 1; i >= 0; i --){ if(s[i] == ')'){ ++cnt; } else{ if(cnt == 0){ if(st2.empty()) { cout << "impossible\n"; return; } ret[st2.top()] = 'B'; ret[i] = 'R'; st2.pop(); } else{ cnt --; st2.push(i); } } } cout << ret << endl; } int main() { ios_base::sync_with_stdio(false); int t_case; cin >> t_case; if(t_case == 1){ int t; cin >> t; string s; while(t --){ cin >> s; solve(s); } } else if(t_case == 2){ int t; cin >> t; memset(dp, -1, sizeof dp); while(t --){ int n; cin >> n; cout << rek(n, 0, 0) << endl; } } return 0; }

Compilation message (stderr)

parentrises.cpp: In function 'void solve(std::__cxx11::string)':
parentrises.cpp:25:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...