Maximice las ganancias vendiendo como máximo productos M

Dadas dos listas que contienen precios de costo CP[] y precios de venta SP[] de productos respectivamente. La tarea es maximizar la ganancia vendiendo como máximo productos ‘M’. 

Ejemplos: 

Entrada: N = 5, M = 3 
CP[]= {5, 10, 35, 7, 23} 
SP[] = {11, 10, 0, 9, 19} 
Salida:
Beneficio del 0º producto, es decir, 11-5 = 6 
Beneficio en el 3er producto, es decir, 9-7 = 2 
La venta de cualquier otro producto no generará ningún beneficio. 
Entonces, ganancia total = 6+2 = 8.

Entrada: N = 4, M = 2 
CP[] = {17, 9, 8, 20} 
SP[] = {10, 9, 8, 27} 
Salida:
 

Acercarse:  

  1. Almacene las ganancias/pérdidas en la compra y venta de cada producto, es decir, SP[i]-CP[i] en una array.
  2. Ordene esa array en orden descendente.
  3. Sume los valores positivos hasta los valores M, ya que los valores positivos denotan ganancias.
  4. Suma de retorno.

A continuación se muestra la implementación del enfoque anterior:  

C++

// C++ implementation of above approach:
#include <bits/stdc++.h>
using namespace std;
 
// Function to find profit
int solve(int N, int M, int cp[], int sp[])
{
    int profit[N];
 
    // Calculating profit for each gadget
    for (int i = 0; i < N; i++)
        profit[i] = sp[i] - cp[i];
 
    // sort the profit array in descending order
    sort(profit, profit + N, greater<int>());
 
    // variable to calculate total profit
    int sum = 0;
 
    // check for best M profits
    for (int i = 0; i < M; i++) {
        if (profit[i] > 0)
            sum += profit[i];
        else
            break;
    }
 
    return sum;
}
 
// Driver Code
int main()
{
 
    int N = 5, M = 3;
    int CP[] = { 5, 10, 35, 7, 23 };
    int SP[] = { 11, 10, 0, 9, 19 };
 
    cout << solve(N, M, CP, SP);
 
    return 0;
}

Java

// Java implementation of above approach:
import java.util.*;
import java.lang.*;
import java.io.*;
 
class GFG
{
 
// Function to find profit
static int solve(int N, int M,
                 int cp[], int sp[])
{
    Integer []profit = new Integer[N];
 
    // Calculating profit for each gadget
    for (int i = 0; i < N; i++)
        profit[i] = sp[i] - cp[i];
 
    // sort the profit array
    // in descending order
    Arrays.sort(profit, Collections.reverseOrder());
 
    // variable to calculate total profit
    int sum = 0;
 
    // check for best M profits
    for (int i = 0; i < M; i++)
    {
        if (profit[i] > 0)
            sum += profit[i];
        else
            break;
    }
 
    return sum;
}
 
// Driver Code
public static void main(String args[])
{
    int N = 5, M = 3;
    int CP[] = { 5, 10, 35, 7, 23 };
    int SP[] = { 11, 10, 0, 9, 19 };
 
    System.out.println(solve(N, M, CP, SP));
}
}
 
// This code is contributed
// by Subhadeep Gupta

Python3

# Python3 implementation
# of above approach
 
# Function to find profit
def solve(N, M, cp, sp) :
     
    # take empty list
    profit = []
     
    # Calculating profit
    # for each gadget
    for i in range(N) :
        profit.append(sp[i] - cp[i])
 
    # sort the profit array
    # in descending order
    profit.sort(reverse = True)
 
    sum = 0
     
    # check for best M profits
    for i in range(M) :
        if profit[i] > 0 :
            sum += profit[i]
        else :
            break
 
    return sum
 
# Driver Code
if __name__ == "__main__" :
 
    N, M = 5, 3
    CP = [5, 10, 35, 7, 23]
    SP = [11, 10, 0, 9, 19]
     
    # function calling
    print(solve(N, M, CP, SP))
     
# This code is contributed
# by ANKITRAI1

C#

// C# implementation of above approach:
using System;
 
class GFG
{
 
// Function to find profit
static int solve(int N, int M,
                 int[] cp, int[] sp)
{
    int[] profit = new int[N];
 
    // Calculating profit for each gadget
    for (int i = 0; i < N; i++)
        profit[i] = sp[i] - cp[i];
 
    // sort the profit array
    // in descending order
    Array.Sort(profit);
    Array.Reverse(profit);
 
    // variable to calculate total profit
    int sum = 0;
 
    // check for best M profits
    for (int i = 0; i < M; i++)
    {
        if (profit[i] > 0)
            sum += profit[i];
        else
            break;
    }
 
    return sum;
}
 
// Driver Code
public static void Main()
{
    int N = 5, M = 3;
    int[] CP = { 5, 10, 35, 7, 23 };
    int[] SP = { 11, 10, 0, 9, 19 };
 
    Console.Write(solve(N, M, CP, SP));
}
}
 
// This code is contributed
// by ChitraNayal

PHP

<?php
// PHP implementation of above approach:
 
// Function to find profit
function solve($N, $M, &$cp, &$sp)
{
    $profit = array_fill(0, $N, NULL);
 
    // Calculating profit for each gadget
    for ($i = 0; $i < $N; $i++)
        $profit[$i] = $sp[$i] - $cp[$i];
 
    // sort the profit array
    // in descending order
    rsort($profit);
 
    // variable to calculate
    // total profit
    $sum = 0;
 
    // check for best M profits
    for ($i = 0; $i < $M; $i++)
    {
        if ($profit[$i] > 0)
            $sum += $profit[$i];
        else
            break;
    }
 
    return $sum;
}
 
// Driver Code
$N = 5;
$M = 3;
$CP = array( 5, 10, 35, 7, 23 );
$SP = array( 11, 10, 0, 9, 19 );
 
echo solve($N, $M, $CP, $SP);
 
// This code is contributed
// by ChitraNayal
?>

Javascript

<script>
 
// Javascript implementation of above approach:
     
// Function to find profit
function solve(N, M, cp, sp)
{
    let profit = new Array(N);
     
    // Calculating profit for each gadget
    for(let i = 0; i < N; i++)
        profit[i] = sp[i] - cp[i];
     
    // Sort the profit array
    // in descending order
    profit.sort(function(a, b){return b - a;});
     
    // Variable to calculate total profit
    let sum = 0;
     
    // Check for best M profits
    for(let i = 0; i < M; i++)
    {
        if (profit[i] > 0)
            sum += profit[i];
        else
            break;
    }
    return sum;
}
 
// Driver Code
let N = 5, M = 3;
let CP = [ 5, 10, 35, 7, 23 ];
let SP = [ 11, 10, 0, 9, 19 ];
 
document.write(solve(N, M, CP, SP));
 
// This code is contributed by rag2127
 
</script>
Producción: 

8

 

Complejidad de tiempo : O(n*log(n)+m)
Espacio auxiliar : O(n)

Publicación traducida automáticamente

Artículo escrito por Subash23 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *