Submission #905885

#TimeUsernameProblemLanguageResultExecution timeMemory
905885Faisal_SaqibBali Sculptures (APIO15_sculpture)C++17
71 / 100
1035 ms3316 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]; bool posp[N][N]; int main() { int n,a,b; cin>>n>>a>>b; for(int i=0;i<n;i++) { cin>>pre[i+1]; pre[i+1]+=pre[i]; } ll pos=(1ll<<37)-1; for(int i=36;i>=0;i--) { ll new_pos=pos-(1ll<<i); for(int i=0;i<=n;i++) for(int j=0;j<=n;j++) posp[i][j]=0; posp[0][0]=1; bool pos1=0; for(int i=1;i<=n;i++) { for(int j=1;j<=i;j++) { for(int k=0;k<i;k++) { if(posp[k][j-1]) { bool das=1; ll np=(pre[i]-pre[k]); for(int bit=36;bit>=0;bit--) if((np&(1ll<<bit))>((new_pos&(1ll<<bit)))) das=0; if(das) posp[i][j]=1; } } if(i==n and a<=j and j<=b and posp[i][j]) { 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...