Submission #145994

#TimeUsernameProblemLanguageResultExecution timeMemory
145994str0ctBali Sculptures (APIO15_sculpture)C++14
0 / 100
3 ms376 KiB
#include<bits/stdc++.h> using namespace std; using ll=long long; ll N,A,B; ll arr[2020]; ll ans; void sol2(){ ll k=45; ans=(1LL<<k)-1; k--; ll dp[2020]; while(k>=0){ ans-=(1LL<<k); fill(dp+1,dp+2020,10101010); for(ll i=1;i<=N;i++){ for(ll j=0;j<i;j++)if(((arr[i]-arr[j])|ans)==ans)dp[i]=min(dp[i],dp[j]+1); } if(dp[N]>B)ans+=(1<<k); k--; } } void sol1(){ ll dp[105][105]; ll k=45; ans=(1LL<<k)-1; k--; while(k>0){ for(ll i=0;i<105;i++)for(ll j=0;j<105;j++)dp[i][j]=0; dp[0][0]=1; ans-=(1LL<<k); for(ll i=1;i<=N;i++) for(ll j=1;j<=i;j++) for(ll p=0;p<i;p++) if(dp[p][j-1]&&((arr[i]-arr[p])|ans)==ans)dp[i][j]=1; ll flag=0; for(ll i=A;i<=B;i++){ if(dp[N][i]){ flag=1; break; } } if(!flag)ans+=(1LL<<k); k--; } } int main(){ scanf("%lld%lld%lld",&N,&A,&B); for(ll i=1;i<=N;i++){ scanf("%lld",arr+i); arr[i]+=arr[i-1]; } if(A)sol1(); else sol2(); printf("%lld",ans); }

Compilation message (stderr)

sculpture.cpp: In function 'int main()':
sculpture.cpp:47:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%lld%lld%lld",&N,&A,&B);
     ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
sculpture.cpp:49:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%lld",arr+i);
         ~~~~~^~~~~~~~~~~~~~
#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...