제출 #1321189

#제출 시각아이디문제언어결과실행 시간메모리
1321189AMel0nBali Sculptures (APIO15_sculpture)C++20
0 / 100
0 ms332 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; const ll INF = 1e18; ll N, A, B; vector<ll> V; vector<vector<ll>> dp; // dp[i][OR-sum] vector<ll> PS; ll sum(ll a, ll b) { return PS[b+1] - PS[a]; } signed main() { cin.tie(0); ios::sync_with_stdio(false); cin >> N >> A >> B; V.resize(N), PS.resize(N+1); ll MX = 0; for(ll i = 0; i < N; i++) { cin >> V[i]; PS[i+1] = PS[i] + V[i]; MX = max(MX, V[i]); } ll MXX = ((1ll << (__lg(MX) + 2ll)) - 1ll); dp.resize(N+1, vector<ll>(MXX + 1, INF)); dp[0][0] = 0; for(ll i = 0; i <= N; i++) { for(ll k = MXX; k >= 0; k--) { for(ll j = 0; j < i; j++) { dp[i][sum(j, i-1) | k] = min(dp[i][sum(j, i-1) | k], 1 + dp[j][k]); // cout << i << ' ' << j << ' ' << k << ' ' << (sum(j, i-1) | k) << ' ' << dp[j][k] << ' ' << dp[i][sum(j, i-1) | k] << endl; } } } for(ll k = 0; k <= MXX; k++) { if (dp[N][k] <= B) { cout << k << endl; break; } } }
#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...