Submission #389614

#TimeUsernameProblemLanguageResultExecution timeMemory
389614milleniumEeeeBali Sculptures (APIO15_sculpture)C++17
71 / 100
1086 ms4300 KiB
#include <bits/stdc++.h> #define fr first #define sc second #define pii pair<int, int> #define pb push_back #define szof(s) (int)s.size() #define all(s) s.begin(), s.end() #define fastInp ios_base::sync_with_stdio(0); cin.tie(0); #define int long long using namespace std; const int MAXN = 2005; const int INF = 1e18; int y[MAXN]; int pref[MAXN]; int get_sum(int l, int r) { return pref[r] - pref[l - 1]; } bool dp[MAXN][MAXN]; int n, a, b; bool in(int small, int big) { return ((big & small) == small); } // можно использовать только биты в x bool check(int x) { memset(dp, 0, sizeof(dp)); dp[0][0] = 1; for (int gr = 1; gr <= b; gr++) { for (int i = gr; i <= n; i++) { for (int last = 0; last < i; last++) { if (dp[gr - 1][last] && in(get_sum(last + 1, i), x)) { dp[gr][i] = 1; } } } } for (int gr = a; gr <= b; gr++) { if (dp[gr][n]) { return true; } } return false; } signed main() { fastInp; cin >> n >> a >> b; for (int i = 1; i <= n; i++) { cin >> y[i]; pref[i] = pref[i - 1] + y[i]; } int cur = (1ll << 63) - 1; for (int i = 62; i >= 0; i--) { if (check(cur ^ (1ll << i))) { cur ^= (1ll << i); } } cout << cur << endl; } /* 6 1 3 8 1 2 1 5 4 */

Compilation message (stderr)

sculpture.cpp: In function 'int main()':
sculpture.cpp:58:24: warning: integer overflow in expression of type 'long long int' results in '9223372036854775807' [-Woverflow]
   58 |  int cur = (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...