Submission #73945

#TimeUsernameProblemLanguageResultExecution timeMemory
73945KLPPBali Sculptures (APIO15_sculpture)C++14
0 / 100
4 ms876 KiB
#include<iostream>

using namespace std;
typedef long long int lld;
#define INF 1000000000000000
lld DP[3000][3000];
lld Y[3000];
lld acc[3000];
lld solve(int pos, int groups){
	if(DP[pos][groups]!=-1)return DP[pos][groups];
	DP[pos][groups]=INF;
	for(int j=0;j<pos;j++){
		DP[pos][groups]=min(DP[pos][groups],(solve(j,groups-1)|(acc[pos]-acc[j])));
	}
	return DP[pos][groups];
}
int main(){
	int n,a,b;
	cin>>n>>a>>b;
	for(int i=0;i<n;i++)cin>>Y[i];
	acc[0]=0;
	for(int i=0;i<n;i++)acc[i+1]=acc[i]+Y[i];
	for(int i=0;i<=n;i++){
		for(int j=0;j<=b;j++)DP[i][j]=-1;
	}
	for(int j=0;j<=b;j++)DP[0][j]=INF;
	for(int i=0;i<=n;i++)DP[i][0]=INF;
	DP[0][0]=0;
	lld ans=INF;
	/*for(int i=0;i<=n;i++){
		for(int j=0;j<=b;j++)cout<<solve(i,j)<<" ";
		cout<<endl;
	}*/
	for(int j=a;j<=b;j++){
		ans=min(ans,solve(n,j));
		//cout<<solve(n,j)<<endl;
	}
	cout<<ans<<endl;
	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...