Submission #582464

#TimeUsernameProblemLanguageResultExecution timeMemory
582464groshiBali Sculptures (APIO15_sculpture)C++17
100 / 100
217 ms628 KiB
#include<iostream> #include<vector> #include<algorithm> #include<utility> #include<string> #include<queue> using namespace std; int t[3000]; long long sumy[3000]; int dp[3000]; bool dp2[3000][3000]; int main() { cin.tie(0); cout.tie(0); ios_base::sync_with_stdio(0); int n,a,b; cin>>n>>a>>b; for(int i=1;i<=n;i++) { cin>>t[i]; sumy[i]=sumy[i-1]+t[i]; } if(a==1) { long long wynik=0; long long szukam=0; for(int c=60;c>=0;c--) { for(int i=1;i<=n;i++) dp[i]=1e9; szukam=wynik+((long long)1<<c)-1; long long mam=0; for(int i=1;i<=n;i++) { mam=0; for(int j=i-1;j>=0;j--) { mam+=t[j+1]; long long teraz=szukam|mam; if(teraz!=szukam) continue; dp[i]=min(dp[i],dp[j]+1); } } if(dp[n]>b) wynik+=((long long)1<<c); } cout<<wynik; } else{ long long wynik=0,szukam=0,mam=0; for(int c=60;c>=0;c--) { for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) dp2[i][j]=0; szukam=wynik+((long long)1<<c)-1; dp2[0][0]=1; for(int i=1;i<=n;i++) { mam=0; for(int j=i-1;j>=0;j--) { mam+=t[j+1]; long long teraz=szukam|mam; if(teraz!=szukam) continue; for(int k=0;k<=n;k++) { if(dp2[j][k]) dp2[i][k+1]=1; } } } bool ok=0; for(int i=a;i<=b;i++) if(dp2[n][i]==1) ok=1; if(ok==0) wynik+=((long long)1<<c); } cout<<wynik; } 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...