제출 #1324635

#제출 시각아이디문제언어결과실행 시간메모리
1324635fatelessBali Sculptures (APIO15_sculpture)C++20
37 / 100
3 ms568 KiB
// #pragma GCC optimize("Ofast,unroll-loops") #include <bits/stdc++.h> using namespace std; #define speedup cin.tie(0)->sync_with_stdio(0) #define all(x) begin(x), end(x) #define int long long #define pb push_back #define arr array #define vc vector const int N = 2e2 + 10; static int dp[N][N]; inline void solve () { int n, l, r; cin >> n >> l >> r; vc<int> pf (n + 1, 0), a (n + 1, 0); for (int i = 1; i <= n; i++) cin >> a[i]; for (int i = 1; i <= n; i++) pf[i] = pf[i - 1] + a[i]; auto good = [&](int mask) -> int { memset(dp, 0, sizeof(dp)); dp[0][0] = 1; for (int j = 1; j <= r; j++) { for (int i = 1; i <= n; i++) { for (int k = 0; k < i; k++) { int sum = pf[i] - pf[k]; if (((sum | mask) == mask) && dp[j - 1][k]) { dp[j][i] = 1; break; } } } if (dp[j][n] && j >= l) return 1; } return 0; }; int lgm = 60, ans = (1LL << lgm) - 1; for (int bit = lgm - 1; bit >= 0; bit--) { ans ^= (1LL << bit); if (!good(ans)) ans ^= (1 << bit); } cout << ans << '\n'; } signed main() { speedup; solve(); return 0; } /* 6 1 3 8 1 2 1 5 4 */
#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...