Submission #952607

#TimeUsernameProblemLanguageResultExecution timeMemory
952607UnforgettableplBali Sculptures (APIO15_sculpture)C++17
71 / 100
74 ms608 KiB
#include <bits/stdc++.h> using namespace std; #define int long long bool DP[101][101]; int DPmin[2001]; int arr[2001]; int a,b,n; bool testany(int k){ for(auto&i:DP)for(auto&j:i)j=false; DP[0][0]=true; for(int j=1;j<=b;j++){ for(int i=j;i<=n;i++){ int sum = arr[i]; for(int x=i-1;x>=j-1;x--){ if((sum|k) == k and DP[x][j-1]){DP[i][j]=true;break;} sum+=arr[x]; } } } for(int i=a;i<=b;i++)if(DP[n][i])return true; return false; } bool test1(int k){ for(int&i:DPmin)i=1e18; DPmin[0]=0; for(int i=1;i<=n;i++){ int sum = arr[i]; for(int j=i-1;j>=0;j--){ if((sum|k)==k)DPmin[i]=min(DPmin[i],DPmin[j]+1); sum+=arr[j]; } } return DPmin[n]<=b; } bool test(int k){ return n<=100 ? testany(k) : test1(k); } int32_t main(){ ios_base::sync_with_stdio(false); cin.tie(nullptr); cin >> n >> a >> b; for(int i=1;i<=n;i++)cin>>arr[i]; int ans = 0; for(int bit=39;bit>=0;bit--){ if(test(ans|((1ll<<bit)-1)))continue; ans|=(1ll<<bit); } cout << ans << '\n'; }
#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...