제출 #1137042

#제출 시각아이디문제언어결과실행 시간메모리
1137042sohamsen15Bali Sculptures (APIO15_sculpture)C++20
0 / 100
0 ms328 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; using pii = pair<int, int>; using pll = pair<ll, ll>; const int INF = 2e9; const ll INFL = 2e18; ll n; vector<ll> a, p; map<pll, ll> memo; ll solve(ll idx, ll left) { if (memo.count({idx, left})) return memo[{idx, left}]; if (left == 0) return p[idx]; ll best = INFL; for (ll i = 1; i < idx; i++) { // Place partition between i and i + 1 ll prev = solve(i, left - 1); ll sum = p[idx] - p[i]; best = min(best, prev | sum); } memo[{idx, left}] = best; return best; } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); ll l, r; cin >> n >> l >> r; a.resize(n + 1); p.resize(n + 1); for (ll i = 1; i <= n; i++) cin >> a[i]; p[0] = 0; for (ll i = 1; i <= n; i++) p[i] = a[i] + p[i - 1]; ll ans = INFL; for (ll i = l; i <= r; i++) ans = min(ans, solve(n, i - 1)); cout << ans; }
#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...