제출 #1321660

#제출 시각아이디문제언어결과실행 시간메모리
1321660kawhietBali Sculptures (APIO15_sculpture)C++20
71 / 100
576 ms16940 KiB
#include <bits/stdc++.h> using namespace std; #define int long long constexpr int N = 105; constexpr int inf = 1e18; int a[N], s[N][N]; set<int> dp[N][N]; signed main() { ios::sync_with_stdio(false); cin.tie(nullptr); int n, l, r; cin >> n >> l >> r; for (int i = 1; i <= n; i++) { cin >> a[i]; } for (int i = 0; i <= n; i++) { int cur = 0; for (int j = i; j <= n; j++) { cur += a[j]; s[i][j] = cur; } } auto put = [&](int i, int j, int x) { if (dp[i][j].size() < 100) { dp[i][j].insert(x); } else { if (x < *dp[i][j].rbegin()) { dp[i][j].erase(--dp[i][j].end()); dp[i][j].insert(x); } } }; dp[0][0].insert(0); for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++) { for (int k = 0; k < i; k++) { int sum = s[k + 1][i]; for (auto x : dp[k][j - 1]) { put(i, j, (x | sum)); } } } } int ans = inf; for (int i = l; i <= r; i++) { ans = min(ans, *dp[n][i].begin()); } cout << ans << '\n'; 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...