Submission #492585

#TimeUsernameProblemLanguageResultExecution timeMemory
492585PoPularPlusPlusBali Sculptures (APIO15_sculpture)C++17
100 / 100
115 ms452 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define ull unsigned long long #define pb(e) push_back(e) #define sv(a) sort(a.begin(),a.end()) #define sa(a,n) sort(a,a+n) #define mp(a,b) make_pair(a,b) #define vf first #define vs second #define ar array #define all(x) x.begin(),x.end() const int inf = 0x3f3f3f3f; const int mod = 1000000007; const double PI=3.14159265358979323846264338327950288419716939937510582097494459230; bool remender(ll a , ll b){return a%b;} void solve(){ int n; cin >> n; int a , b; cin >> a >> b; ll arr[n + 1]; for(int i = 1; i <= n; i++)cin >> arr[i]; if(n <= 100){ ll dp[n + 1][b + 1]; ll cur = 0; ll ans = 0; ll sum; for(ll bit = 39; bit >= 0; bit--){ memset(dp,-1,sizeof dp); dp[0][0] = 1; cur += 1LL << bit; for(int i = 1; i <= n; i++){ sum = 0; for(int j = 1; j <= min(i , b); j++){ sum = 0; for(int k = i; k > 0; k--){ sum += arr[k]; if((sum & cur) == 0)dp[i][j] = max(dp[i][j] , dp[k-1][j-1]); } } } int possible = 0; for(int j = a; j <= b; j++){ if(dp[n][j] != -1){ possible = 1; } } if(possible == 0){ cur -= 1LL << bit; ans += 1LL << bit; } } cout << ans << '\n'; } else { ll ans = 0; ll cur = 0; ll sum; int dp[n + 1]; memset(dp,-1,sizeof dp); for(ll bit = 45; bit >= 0; bit--){ cur += 1LL << bit; memset(dp,-1,sizeof dp); dp[0] = 0; for(int i = 1; i <= n; i++){ sum = 0; for(int j = i; j > 0; j--){ sum += arr[j]; if((sum & cur) == 0 && dp[j-1] != -1){ if(dp[i]!=-1)dp[i] = min(dp[i] , dp[j-1] + 1); else dp[i] = dp[j-1] + 1; } } } if(dp[n] > b || dp[n] == -1){ cur -= 1LL << bit; ans += 1LL << bit; } } cout << ans << '\n'; } } int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); //int t;cin >> t;while(t--) solve(); return 0; }
#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...