Encuentre números enteros tales que A contenga exactamente X enteros distintos mayores que A{i)


Dada una matriz A() de norte enteros, la tarea es imprimir el número de enteros i de 1 a N, para los cuales A contiene exactamente X enteros distintos (para X = 0 a N-1) mayores que Ai

Ejemplos:

Aporte: N = 6, A() = {2, 7, 1, 8, 2, 8}
Producción: {2, 1, 2, 1, 0, 0}
Explicación: Consideremos X = 2.
A(1) = 2: A contiene 2 enteros distintos mayores que 2 (7 y 8)
A(2) = 7: A contiene 1 entero distinto mayor que 7 (8)
A(3) = 1: A contiene 3 enteros distintos mayores que 1 (2, 7 y 8)
A(4) = 8: A no contiene ningún número entero distinto mayor que 8
A(5) = 2: A contiene 2 enteros distintos mayores que 2 (7 y 8)
A(6) = 8: A no contiene ningún número entero distinto mayor que 8
Entonces, la condición dada se cumple para i=1 y 5 en el caso de X=2.

Aporte: N = 1, A() = {1}
Producción: 1

Acercarse: Para resolver el problema siga las siguientes observaciones:

Observaciones:

Si almacenamos la frecuencia de cada elemento de la matriz en un hashmap y lo ordenamos en orden decreciente según las claves, entonces:

Sea el hashmap – ((u1f1), (tu2f2)….(tunortefnorte)) donde fi es la frecuencia del elemento ui y u1 > u2 > ……un.

  • Para cada i = 1 an, hay i – 1 enteros distintos que es mayor que ui. Entonces, para cada X=0 a n-1, la respuesta para X sería fX+1.
  • La respuesta para X = n a N – 1 sería 0.

Con base en la observación anterior, se puede utilizar el siguiente enfoque para resolver el problema:

  • Declare un mapa (por ejemplo, mp) e inserte los elementos de la matriz A en él.
  • Iterar el mapa desde el ultimate e imprimir las frecuencias de los elementos.
  • Para los elementos restantes (es decir, Nn), imprima Nn ceros.

El siguiente es el código basado en el enfoque anterior:

C++

// C++ code for the above method
#embody <bits/stdc++.h>
utilizing namespace std;
#outline int lengthy lengthy

// Perform to Print the variety of
// integers i from 1 to N such that A
// accommodates precisely X distinct integers
// better than A{i)
void Resolve(int N, int A())
{

    // Declaring the hashmap mp
    map<int, int> mp;

    // Inserting parts of A into mp
    for (int i = 0; i < N; i++) {
        mp(A(i))++;
    }

    // Discovering the scale of map
    int n = (int)mp.dimension();

    // Printing the frequencies of
    // parts in map in reverse order
    for (auto it = mp.rbegin(); it != mp.rend(); it++) {
        cout << it->second << " ";
    }

    // Printing N-n zeroes
    for (int i = 1; i <= N - n; i++) {
        cout << 0 << " ";
    }
}

// Driver code
int32_t major()
{
    int N = 6;
    int A() = { 2, 7, 1, 8, 2, 8 };

    // Perform Name
    Resolve(N, A);
    return 0;
}

Complejidad del tiempo: O(N*log(N))
Espacio Auxiliar: EN)

Related Articles

Democratizar la investigación para innovar y refinar los productos digitales

Mantenerse en sintonía con lo que quieren los usuarios significa...

Comments

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Same Category

spot_img

Stay in touch!

Follow our Instagram