Generate minimum sum sequence of integers with even elements greater
Given an integer N, the task is to generate a sequence of N positive integers such that:
- Every element at the even position must be greater than the element succeeding it and the element preceding it i.e. arr[i – 1] < arr[i] > arr[i + 1]
- The sum of the elements must be even and the minimum possible (among all the possible sequences).
Examples:
Input: N = 4
Output: 1 2 1 2
Input: N = 5
Output: 1 3 1 2 1
Approach: In order to get the sequence with the minimum sum possible, the sequence must be of form 1, 2, 1, 2, 1, 2, 1 … and for cases when the sum of the sequence is not even, any 2 from the sequence can be changed to a 3 to make the sum of the sequence even.
Below is the implementation of the above approach:
C++
#include <bits/stdc++.h>
using namespace std;
void make_sequence( int N)
{
int arr[N + 1], sum = 0;
for ( int i = 1; i <= N; i++) {
if (i % 2 == 1)
arr[i] = 1;
else
arr[i] = 2;
sum += arr[i];
}
if (sum % 2 == 1)
arr[2] = 3;
for ( int i = 1; i <= N; i++)
cout << arr[i] << " " ;
}
int main()
{
int N = 9;
make_sequence(N);
return 0;
}
|
Java
class GFG
{
static void make_sequence( int N)
{
int [] arr = new int [N + 1 ];
int sum = 0 ;
for ( int i = 1 ; i <= N; i++)
{
if (i % 2 == 1 )
arr[i] = 1 ;
else
arr[i] = 2 ;
sum += arr[i];
}
if (sum % 2 == 1 )
arr[ 2 ] = 3 ;
for ( int i = 1 ; i <= N; i++)
System.out.print(arr[i] + " " );
}
public static void main(String[] args)
{
int N = 9 ;
make_sequence(N);
}
}
|
Python 3
def make_sequence( N):
arr = [ 0 ] * (N + 1 )
sum = 0
for i in range ( 1 , N + 1 ):
if (i % 2 = = 1 ):
arr[i] = 1
else :
arr[i] = 2
sum + = arr[i]
if ( sum % 2 = = 1 ):
arr[ 2 ] = 3
for i in range ( 1 , N + 1 ):
print (arr[i], end = " " )
if __name__ = = "__main__" :
N = 9
make_sequence(N)
|
C#
using System;
class GFG
{
public static void make_sequence( int N)
{
int [] arr = new int [N + 1];
int sum = 0;
for ( int i = 1; i <= N; i++)
{
if (i % 2 == 1)
arr[i] = 1;
else
arr[i] = 2;
sum += arr[i];
}
if (sum % 2 == 1)
arr[2] = 3;
for ( int i = 1; i <= N; i++)
Console.Write(arr[i] + " " );
}
public static void Main()
{
int N = 9;
make_sequence(N);
}
}
|
PHP
<?php
function make_sequence( $N )
{
$arr = array ();
$sum = 0;
for ( $i = 1; $i <= $N ; $i ++)
{
if ( $i % 2 == 1)
$arr [ $i ] = 1;
else
$arr [ $i ] = 2;
$sum += $arr [ $i ];
}
if ( $sum % 2 == 1)
$arr [2] = 3;
for ( $i = 1; $i <= $N ; $i ++)
echo $arr [ $i ], " " ;
}
$N = 9;
make_sequence( $N );
?>
|
Javascript
<script>
function make_sequence(N)
{
var arr = Array(N+1), sum = 0;
for ( var i = 1; i <= N; i++) {
if (i % 2 == 1)
arr[i] = 1;
else
arr[i] = 2;
sum += arr[i];
}
if (sum % 2 == 1)
arr[2] = 3;
for ( var i = 1; i <= N; i++)
document.write( arr[i] + " " );
}
var N = 9;
make_sequence(N);
</script>
|
Output:
1 3 1 2 1 2 1 2 1
Time Complexity: O(N)
Auxiliary Space: O(N), since N extra space has been taken.
Last Updated :
27 Aug, 2022
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...