Dados dos enteros positivos N y X . La tarea es imprimir la mediana máxima posible generando un Array de tamaño N con suma X
Ejemplos:
Entrada: N = 1, X = 7
Salida: 7
Explicación: La array puede ser: [7], la mediana es el primer elemento, es decir, 7.Entrada: N = 7, X = 18
Salida: 4
Explicación: Una de las posibles arrays puede ser: [0, 1, 2, 3, 4, 4, 4]. La mediana = ceil(n/2)th elemento = ceil(7/2) = 5th elemento, es decir, 4.
Enfoque: considere que la mediana debe maximizarse, por lo que el enfoque codicioso puede ser hacer que todos los elementos antes de la posición del elemento mediano sean cero y dividir equitativamente la suma X entre el resto de los elementos.
Siga los pasos a continuación para resolver el problema:
- Si n = 1 , imprima X.
- Para n >= 2.
- Cree una variable mediana_pos = ceil((doble)(n)/2.0).
- Decremente mediana_pos para representar el valor del índice.
- Cree una variable mediana = X/(n-median_pos) .
- Imprima la mediana .
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ program for the above approach #include <bits/stdc++.h> using namespace std; // Function to find the maximum median possible int maximizeMedian(int n, int X) { // If only 1 element present if (n == 1) { return X; } else { // Position of median int median_pos = ceil((double)(n) / (2.0)); median_pos--; int median = X / (n - median_pos); return median; } return 0; } // Driver Code int main() { int n = 1, X = 7; cout << maximizeMedian(n, X); }
Java
// Java program for the above approach import java.util.*; public class GFG { // Function to find the maximum median possible static int maximizeMedian(int n, int X) { // If only 1 element present if (n == 1) { return X; } else { // Position of median int median_pos = (int)Math.ceil((double)(n) / (2.0)); median_pos--; int median = X / (n - median_pos); return median; } } // Driver Code public static void main(String args[]) { int n = 1, X = 7; System.out.println(maximizeMedian(n, X)); } } // This code is contributed by Samim Hossain Mondal.
Python3
# Python code for the above approach # Function to find the maximum median possible def maximizeMedian(n, X): # If only 1 element present if (n == 1): return X else: # Position of median median_pos = (n) // (2.0) median_pos -= 1 median = X // (n - median_pos) return median return 0 # Driver Code n = 1 X = 7 print(maximizeMedian(n, X)) # This code is contributed by gfgking
C#
// C# program for the above approach using System; class GFG { // Function to find the maximum median possible static int maximizeMedian(int n, int X) { // If only 1 element present if (n == 1) { return X; } else { // Position of median int median_pos = (int)Math.Ceiling((double)(n) / (2.0)); median_pos--; int median = X / (n - median_pos); return median; } } // Driver Code public static void Main() { int n = 1, X = 7; Console.WriteLine(maximizeMedian(n, X)); } } // This code is contributed by ukasp.
Javascript
<script> // JavaScript code for the above approach // Function to find the maximum median possible function maximizeMedian(n, X) { // If only 1 element present if (n == 1) { return X; } else { // Position of median let median_pos = Math.ceil((n) / (2.0)); median_pos--; let median = X / (n - median_pos); return median; } return 0; } // Driver Code let n = 1, X = 7; document.write(maximizeMedian(n, X)); // This code is contributed by Potta Lokesh </script>
7
Complejidad de Tiempo : O(1)
Espacio Auxiliar : O(1)