33C - Wonderful Randomized Sum - CodeForces Solution


greedy *1800

Please click on ads to support us..

C++ Code:

#include <bits/stdc++.h>
using namespace std;



int main(){
	
	int n;
	cin>>n;

	int arr[n];
	

	int VACSuffix[n];
	int MVASuffix[n];

	int VACPrefix[n];
	int MVAPrefix[n];

	int val;
	cin>>val;
	arr[0] = val;
	VACPrefix[0] = val;
	if(val<0){
		MVAPrefix[0] = val;
	}
	else {
		MVAPrefix[0] = 0;
	}

	for (int i = 1; i < n; ++i)
	{
		int val;
		cin>>val;
		arr[i]=val;
		VACPrefix[i] = VACPrefix[i-1]+val;
		if(MVAPrefix[i-1] > VACPrefix[i]){
			MVAPrefix[i] = VACPrefix[i];
		}
		else{
			MVAPrefix[i] = MVAPrefix[i-1];
		}
	}

	if(n==2){
		int result = abs(arr[0])+abs(arr[1]);
		cout<<result<<endl;
		return 0;
	}

	VACSuffix[n-1] = arr[n-1];
	if(arr[n-1]<0){
		MVASuffix[n-1] = arr[n-1];
	}
	else{
		MVASuffix[n-1] = 0;
	}
	
	for (int i = n-2; i >=0 ; --i)
	{
		VACSuffix[i] = VACSuffix[i+1]+arr[i];
		if(MVASuffix[i+1] > VACSuffix[i]){
			MVASuffix[i] = VACSuffix[i];
		}
		else{
			MVASuffix[i] = MVASuffix[i+1];
		}
	}
	int maxSum = 0;
	for (int i = 0; i < n-1; ++i)
	{
		if(maxSum > MVASuffix[i+1]+MVAPrefix[i]){
			maxSum =  MVASuffix[i+1]+MVAPrefix[i];
		}
	}
	int maxVal = VACPrefix[n-1];
	maxVal = max(maxVal,-VACPrefix[n-1]);
	maxVal = max(maxVal, VACPrefix[n-1]-2* maxSum);

	cout<<maxVal<<endl;
	return 0;
}
    				 	      	 	 				 	   		


Comments

Submit
0 Comments
More Questions

1302. Deepest Leaves Sum
1209. Remove All Adjacent Duplicates in String II
994. Rotting Oranges
983. Minimum Cost For Tickets
973. K Closest Points to Origin
969. Pancake Sorting
967. Numbers With Same Consecutive Differences
957. Prison Cells After N Days
946. Validate Stack Sequences
921. Minimum Add to Make Parentheses Valid
881. Boats to Save People
497. Random Point in Non-overlapping Rectangles
528. Random Pick with Weight
470. Implement Rand10() Using Rand7()
866. Prime Palindrome
1516A - Tit for Tat
622. Design Circular Queue
814. Binary Tree Pruning
791. Custom Sort String
787. Cheapest Flights Within K Stops
779. K-th Symbol in Grammar
701. Insert into a Binary Search Tree
429. N-ary Tree Level Order Traversal
739. Daily Temperatures
647. Palindromic Substrings
583. Delete Operation for Two Strings
518. Coin Change 2
516. Longest Palindromic Subsequence
468. Validate IP Address
450. Delete Node in a BST