Submission #768869

#TimeUsernameProblemLanguageResultExecution timeMemory
768869raysh07Bali Sculptures (APIO15_sculpture)C++17
71 / 100
1080 ms816 KiB
#include <bits/stdc++.h> using namespace std; //#define int long long #define INF (int)1e18 #define f first #define s second mt19937_64 RNG(chrono::steady_clock::now().time_since_epoch().count()); int n, a, b; const int N = 2005; int aa[N]; long long p[N]; bitset <N> bs[N]; bool check(long long x){ bs[0].set(0); for (int i = 1; i <= n; i++){ bs[i] &= 0; for (int j = 0; j < i; j++){ long long val = p[i] - p[j]; if ((val | x) == x) { bs[i] |= bs[j] << 1; } } } for (int i = a; i <= b; i++){ if (bs[n].test(i)) return true; } return false; } void Solve() { cin >> n >> a >> b; for (int i = 1; i <= n; i++) cin >> aa[i], p[i] = p[i - 1] + aa[i]; long long ans = (1LL << 63) - 1; for (int i = 62; i >= 0; i--){ if (check(ans - (1LL << i))) ans -= 1LL << i; } cout << ans << "\n"; } int32_t main() { auto begin = std::chrono::high_resolution_clock::now(); ios_base::sync_with_stdio(0); cin.tie(0); int t = 1; // cin >> t; for(int i = 1; i <= t; i++) { //cout << "Case #" << i << ": "; Solve(); } auto end = std::chrono::high_resolution_clock::now(); auto elapsed = std::chrono::duration_cast<std::chrono::nanoseconds>(end - begin); cerr << "Time measured: " << elapsed.count() * 1e-9 << " seconds.\n"; return 0; }

Compilation message (stderr)

sculpture.cpp: In function 'void Solve()':
sculpture.cpp:41:33: warning: integer overflow in expression of type 'long long int' results in '9223372036854775807' [-Woverflow]
   41 |     long long ans = (1LL << 63) - 1;
      |                     ~~~~~~~~~~~~^~~
#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...