Submission #3369658
Source Code Expand
#include <iostream> #include <bitset> #include <fstream> #include <string> #include <cstring> #include <cmath> #include <cstdlib> #include <ctime> #include <vector> #include <algorithm> #include <numeric> #include <map> #include <set> #include <stack> #include <queue> #include <deque> #include <functional> #include <cctype> #include <list> #include <limits> //#include <boost/multiprecision/cpp_int.hpp> const double EPS = (1e-10); using namespace std; using Int = long long; //using namespace boost::multiprecision; const Int MOD = 1000000007; Int mod_pow(Int x, Int n) { Int res = 1; while(n > 0) { if(n & 1) res = (res * x) % MOD; //ビット演算(最下位ビットが1のとき) x = (x * x) % MOD; n >>= 1; //右シフト(n = n >> 1) } return res; } int imos[105]; int min_right[105]; int min_pos; int min_all; int ma; vector<int> pos_minus; int main(){ cin.tie(0); string S; cin >> S; int ans = 0; for (int i = 0; i < S.length(); i++){ if (S[i] == '(') imos[i] = 1; else imos[i] = -1; if (i){ imos[i] += imos[i-1]; } if (min_all > imos[i]){ min_all = imos[i]; min_pos = i; } if (S[i] == ')') pos_minus.push_back(i); } if (min_all < 0){ ans += -(min_all-1)/2; ma = pos_minus[-(min_all-1)/2-1]; } if (-imos[S.length()-1] == ans*2){ cout << ans + ma << endl; return 0; } int x = imos[S.length()-1] + ans*2; min_right[S.length()-1] = imos[S.length()-1] + ans*2; for (int i = S.length()-2; i >= 0; i--){ min_right[i] = min(min_right[i+1], imos[i] + ans*2); } for (int i = min_pos; i < S.length(); i++){ if (x == min_right[i]){ ma = i; break; } } ans += x/2; cout << ans + ma << endl; }
Submission Info
Submission Time | |
---|---|
Task | B - 天下一魔力発電 |
User | Morifo |
Language | C++14 (Clang 3.8.0) |
Score | 400 |
Code Size | 1976 Byte |
Status | AC |
Exec Time | 1 ms |
Memory | 256 KB |
Judge Result
Set Name | All | ||
---|---|---|---|
Score / Max Score | 400 / 400 | ||
Status |
|
Set Name | Test Cases |
---|---|
All | 01_sample_01, 01_sample_02, 01_sample_03, 02_manual_01, 02_manual_02, 02_manual_03, 10_random_00, 10_random_01, 10_random_02, 10_random_03, 10_random_04, 10_random_05, 10_random_06, 10_random_07, 10_random_08, 10_random_09, 10_random_10, 10_random_11, 10_random_12, 10_random_13, 10_random_14, 10_random_15, 10_random_16, 10_random_17, 10_random_18, 10_random_19, 20_max_00, 20_max_01, 20_max_02, 20_max_03, 20_max_04, 20_max_05 |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
01_sample_01 | AC | 1 ms | 256 KB |
01_sample_02 | AC | 1 ms | 256 KB |
01_sample_03 | AC | 1 ms | 256 KB |
02_manual_01 | AC | 1 ms | 256 KB |
02_manual_02 | AC | 1 ms | 256 KB |
02_manual_03 | AC | 1 ms | 256 KB |
10_random_00 | AC | 1 ms | 256 KB |
10_random_01 | AC | 1 ms | 256 KB |
10_random_02 | AC | 1 ms | 256 KB |
10_random_03 | AC | 1 ms | 256 KB |
10_random_04 | AC | 1 ms | 256 KB |
10_random_05 | AC | 1 ms | 256 KB |
10_random_06 | AC | 1 ms | 256 KB |
10_random_07 | AC | 1 ms | 256 KB |
10_random_08 | AC | 1 ms | 256 KB |
10_random_09 | AC | 1 ms | 256 KB |
10_random_10 | AC | 1 ms | 256 KB |
10_random_11 | AC | 1 ms | 256 KB |
10_random_12 | AC | 1 ms | 256 KB |
10_random_13 | AC | 1 ms | 256 KB |
10_random_14 | AC | 1 ms | 256 KB |
10_random_15 | AC | 1 ms | 256 KB |
10_random_16 | AC | 1 ms | 256 KB |
10_random_17 | AC | 1 ms | 256 KB |
10_random_18 | AC | 1 ms | 256 KB |
10_random_19 | AC | 1 ms | 256 KB |
20_max_00 | AC | 1 ms | 256 KB |
20_max_01 | AC | 1 ms | 256 KB |
20_max_02 | AC | 1 ms | 256 KB |
20_max_03 | AC | 1 ms | 256 KB |
20_max_04 | AC | 1 ms | 256 KB |
20_max_05 | AC | 1 ms | 256 KB |