Submission #1094821

#TimeUsernameProblemLanguageResultExecution timeMemory
1094821Faisal_SaqibBali Sculptures (APIO15_sculpture)C++17
21 / 100
57 ms604 KiB
#include <iostream> #include <set> #include <algorithm> #include <vector> using namespace std; #define ll long long const ll inf=1e18; const ll N=2002; ll pre[N]; ll pw2[38]; ll posa[N]; bool posp[N][N]; int main() { int n,a,b; cin>>n>>a>>b; pw2[0]=1; for(int i=1;i<38;i++) pw2[i]=(2ll*pw2[i-1]); for(int i=0;i<n;i++) { cin>>pre[i+1]; pre[i+1]+=pre[i]; } ll pos=pw2[37]-1; for(int i=36;i>=0;i--) { ll new_pos=pos-pw2[i]; for(int i=0;i<=n;i++) posa[i]=n+10; posa[0]=0; bool pos1=0; for(int i=1;i<=n;i++) { for(int k=0;k<i;k++) { ll np=(pre[i]-pre[k]); ll cur_or=(np|new_pos); if(cur_or==new_pos) posa[i]=min(posa[i],posa[k]+1); } if(i==n and posa[i]<=b) { pos1=1; } } if(pos1) pos=new_pos; } cout<<pos<<'\n'; 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...