제출 #675524

#제출 시각아이디문제언어결과실행 시간메모리
675524AmirAli_H1Bali Sculptures (APIO15_sculpture)C++17
71 / 100
28 ms468 KiB
// In the name of Allah #include <bits/stdc++.h> using namespace std; typedef long long int ll; typedef long double ld; typedef pair<int, int> pii; typedef pair<ll, ll> pll; #define all(x) (x).begin(),(x).end() #define len(x) ((ll) (x).size()) #define F first #define S second #define pb push_back #define sep ' ' #define endl '\n' #define Mp make_pair #define debug(x) cerr << #x << ": " << x << endl; #define kill(x) cout << x << '\n', exit(0); #define set_dec(x) cout << fixed << setprecision(x); #define file_io(x,y) freopen(x, "r", stdin); freopen(y, "w", stdout); int n, l, r; const int maxn = 100 + 4; ll a[maxn]; ll res = 0; bool dp[maxn][maxn]; bool check(int bt) { for (int i = 0; i <= n; i++) { for (int j = 0; j <= n; j++) dp[i][j] = 0; } dp[0][0] = 1; for (int i = 1; i <= n; i++) { ll val = 0; for (int j = i; j >= 1; j--) { val += a[j]; if (((val >> bt) | (res >> bt)) == (res >> bt)) { for (int k = 1; k <= n; k++) { dp[i][k] |= dp[j - 1][k - 1]; } } } } for (int k = l; k <= r; k++) { if (dp[n][k]) return 1; } return 0; } void solve(int bt = 50) { if (bt < 0) return ; if (!check(bt)) res += (1ll << bt); solve(bt - 1); } int main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin >> n >> l >> r; for (int i = 1; i <= n; i++) cin >> a[i]; solve(); cout << res << endl; 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...