Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- #define MAX 55
- bool vis[2][MAX];
- int dp[2][MAX];
- int A[MAX];
- int n;
- int solve(int i,int pl){
- if(i==n){
- if(pl==0) return A[i];
- else return 0;
- }
- if(vis[i][pl]==1) return dp[i][pl];
- vis[i][pl]=1;
- if(pl==0){
- int ret1=A[i]+solve(i+1,1);
- int ret2=solve(i+1,0);
- return dp[i][pl]=max(ret1,ret2);
- }
- else{
- int ret1=solve(i+1,0);
- int ret2=A[i]+solve(i+1,1);
- return dp[i][pl]=min(ret1,ret2);
- }
- }
- int main(){
- scanf("%d",&n);
- int sum=0;
- for(int i=1;i<=n;i++){
- scanf("%d",&A[i]);
- sum+=A[i];
- }
- int ret=solve(1,0);
- cout<<sum-ret<<" "<<ret<<endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement