Submission #507173

#TimeUsernameProblemLanguageResultExecution timeMemory
507173Aldas25Bali Sculptures (APIO15_sculpture)C++14
100 / 100
291 ms11124 KiB
#include <bits/stdc++.h> using namespace std; #define FAST_IO ios_base::sync_with_stdio(0); cin.tie(nullptr) #define FOR(i, a, b) for (int i = (a); i <= (b); i++) #define REP(n) FOR(O, 1, (n)) #define pb push_back #define f first #define s second typedef long long ll; typedef pair<int, int> pii; typedef vector<int> vi; typedef vector<ll> vl; typedef vector<pii> vii; const int MAXN = 2100; const ll INF = (ll)1e17; int n, a, b; ll y[MAXN]; ll pref[MAXN]; bool dp[MAXN][MAXN]; bool check2 (ll mask) { // cout << " mask = " << mask << endl; FOR(i, 0, n) FOR(g, 0, n) dp[i][g] = false; dp[0][0] = true; FOR(i, 1, n) FOR(g, 1, i) { FOR(j, g-1, i-1) { if (!dp[j][g-1]) continue; ll sum = pref[i]-pref[j]; if (sum & mask) continue; dp[i][g] = true; //cout << " i = " << i << " g = " << g << " is true for j = " << j << endl; break; } } FOR(x, a, b) if (dp[n][x]) return true; return false; } vi adj[MAXN]; int d[MAXN]; bool check1 (ll mask) { FOR(i, 0, n) adj[i].clear(); FOR(i, 0, n) FOR(j, 0, i-1) { ll sum = (pref[i]-pref[j]); if (sum & mask) continue; adj[j].pb(i); } FOR(i, 0, n) d[i] = -1; d[0] = 0; queue<int> q; q.push(0); while (!q.empty()) { int v = q.front(); q.pop(); for (int u : adj[v]) { if (d[u] == -1) { d[u] = d[v]+1; q.push(u); } } } if (a <= d[n] && d[n] <= b) return true; else return false; } int main() { FAST_IO; cin >> n >> a >> b; FOR(i, 1, n) cin >> y[i]; FOR(i, 1, n) pref[i] = pref[i-1] + y[i]; bool solve1 = (a==1); ll ans = 0; for (ll k = 50; k >= 0; k--) { ll cur = ans + (1ll<<k) - 1ll; ll inv = ~cur; if (solve1 && !check1(inv)) ans += (1ll << k); if (!solve1 && !check2(inv)) ans += (1ll << k); } cout << ans << "\n"; return 0; } /* in: 6 1 3 8 1 2 1 5 4 ans: 11 in: 6 1 6 8 1 2 1 5 4 */
#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...