mytheus's blog

By mytheus, history, 10 months ago, In English

I'm 13 years old and learning dynamic programming to improve my problem-solving abilities. Could someone please help me solve this problem? It has a dp kinda vibe, I learned how to memoize it, but I feel like I am not able to write the transition function, or the recursion statement in this properly. Can someone help me with my approach I have some mistake still Link: https://mirror.codeforces.com/contest/1343/problem/C

void solve(vector<ll>&a,ll idx,ll &maxSum,ll &sum,ll flag)
{
	if(idx == a.size()){
		maxSum = max(maxSum,sum);
		return ;
	}
	if(a[idx] < 0 && flag == 1)
	{
		sum += a[idx];
		solve(a,idx+1,maxSum,sum,0);
		sum -= a[idx];

		solve(a,idx+1,maxSum,sum,1);
	}
	else if(a[idx] > 0 && flag == 0)
	{
		sum += a[idx];
		solve(a,idx+1,maxSum,sum,1);
		sum -= a[idx];

		solve(a,idx+1,maxSum,sum,0);
	}
}
void solve(){
	ll n;
	cin >> n;
	vt<ll> a(n);
	cin >> a;
	ll sum = 0,maxSum = -1e9;
	solve(a,0,maxSum,sum,0);
	solve(a,0,maxSum,sum,1);
	cout << maxSum << endl;
}

Full text and comments »

  • Vote: I like it
  • 0
  • Vote: I do not like it