제출 #812521

#제출 시각아이디문제언어결과실행 시간메모리
812521BelphegorBali Sculptures (APIO15_sculpture)C++14
50 / 100
71 ms364 KiB
#include<bits/stdc++.h> using namespace std; typedef long long ll; ll u = 1; int n,a,b; ll A[2005]; int dp[2005]; bool pos(ll mask){ for(int i=1; i<=n; i++){ dp[i] = 1e8; for(int j=0; j<i; j++){ ll w = A[i] - A[j]; if((w&mask) == w) dp[i] = min(dp[i],1 + dp[j]); } } return (dp[n] <= b); } int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); cin>>n>>a>>b; for(int i=1; i<=n; i++) cin>>A[i]; for(int i=1; i<=n; i++) A[i]+=A[i-1]; if(!A[n]){ cout<<0; return 0; } if(a > 1){ assert(n<=100); cout<<A[n]; } else{ int last_digit = 41; while(pos( (u<<(last_digit+1)) - 1 )) last_digit--; last_digit++; ll mask = (u<<last_digit)*2 - 1; for(int i=last_digit-1; i>=0; i--){ mask^=(u<<i); if(pos(mask)) continue; else mask^=(u<<i); } cout<<mask; } }
#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...