Submission #991880

#TimeUsernameProblemLanguageResultExecution timeMemory
991880danikoynovSecurity Gate (JOI18_security_gate)C++14
30 / 100
4187 ms568 KiB
#include<bits/stdc++.h> #define endl '\n' using namespace std; typedef long long ll; void speed() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); } const ll mod = 1000000007; int n; string s; const int maxn = 310; int max_val[maxn][maxn]; int pref[maxn]; void solve() { cin >> n >> s; s = "#" + s; int cnt = 0; for (int i = 1; i <= n; i ++) { if (s[i] == 'x') cnt ++; } int res = 0; for (int mask = 0; mask < (1 << cnt); mask ++) { int bit = 0; string t = s; for (int i = 1; i <= n; i ++) { if (t[i] == 'x') { //cout << "here " << mask << " " << bit << " " << (mask & (1 << bit)) << endl; if ((mask & (1 << bit)) > 0) t[i] = '('; else t[i] = ')'; bit ++; } } bool done = false; for (int i = 1; i <= n; i ++) { pref[i] = pref[i - 1]; if (t[i] == '(') pref[i] ++; else pref[i] --; } if (abs(pref[n]) % 2 == 1) { continue; } int d = pref[n]; int lf = 1; while(lf <= n && pref[lf] >= 0) lf ++; lf --; int rf = n; while(rf > 0 && pref[rf] - d >= 0) rf --; for (int i = 1; i <= n; i ++) { int x = pref[i]; for (int j = i; j <= n; j ++) { x = max(x, pref[j]); max_val[i][j] = x; } } for (int r = n; r >= rf - 1 && !done; r --) { for (int l = 1; l <= lf + 1; l ++) { ///cout << "HERE " << l << " " << r << endl; if (pref[r] - pref[l - 1] != d / 2) continue; int val = max_val[l][r] - pref[l - 1]; val = -val; val = val + pref[l - 1]; if (val >= 0) { done = true; break; } } } bool tf = true; for (int d = 1; d <= n; d ++) { if (pref[d] < 0) { tf = false; break; } } if (pref[n] != 0) tf = false; if (tf) { ///cout << i << " : " << j << endl; done = true; } if (done) res ++; //cout << t << " " << done << endl; //cout << lf << " " << rf << endl; } cout << res << endl; } int main() { speed(); solve(); return 0; }
#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...