Submission #23429

#TimeUsernameProblemLanguageResultExecution timeMemory
23429duongthoi1999Bali Sculptures (APIO15_sculpture)C++14
50 / 100
149 ms17912 KiB
#include <bits/stdc++.h> using namespace std; #define rep(i,a,n) for (int i=a;i<n;i++) #define per(i,a,n) for (int i=n-1;i>=a;i--) #define pb push_back #define all(x) (x).begin(),(x).end() #define fi first #define se second #define SZ(x) ((int)(x).size()) typedef long long ll; typedef long double ld; typedef pair<int, int> ii; const int mod = (int) 1e9 + 7; const ll inf = 1LL << 60; const int maxn = (int) 2e3 + 5; const ld eps = 1e-9; int n, a, b, y[maxn], g[maxn], f[maxn][maxn]; ll s[maxn]; void solve2() { ll res = 0; per(x, 0, 50) { rep(i, 1, n + 1) g[i] = mod; rep(i, 1, n + 1) { rep(j, 0, i) { ll val = s[i] - s[j]; if((val | res) < res + (1LL << x)) g[i] = min(g[i], g[j] + 1); } } if(g[n] > b) res |= (1LL << x); } cout << res << '\n'; } void solve1() { ll res = 0; vector<int> cand; rep(i, a, b + 1) cand.pb(i); per(x, 0, 50) { rep(i, 0, n + 1) rep(j, 0, n + 1) f[i][j] = 0; f[0][0] = 1; rep(i, 1, n + 1) { rep(k, 1, i + 1) { rep(j, 0, i) { ll val = s[i] - s[j]; if((val | res) < res + (1LL << x)) f[i][k] = f[j][k - 1]; } } } int t = 1; vector<int> nwcand; for (auto i : cand) { if(f[n][i]) { t = 0; nwcand.pb(i); } } if(t) res |= (1LL << x); else cand = nwcand; } cout << res << '\n'; } int main() { //freopen("test.txt", "r", stdin); ios_base::sync_with_stdio(0); cin.tie(0); cin >> n >> a >> b; rep(i, 1, n + 1) cin >> y[i], s[i] = s[i - 1] + y[i]; if(a == 1) solve2(); else solve1(); }
#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...