Problemas del Certamen Jurisdiccional 2023 en el Juez

¡¡Ya están los problemas del Certamen Jurisdiccional funcionando en el Juez Online!!

A entrenar :muscle::muscle::muscle::muscle::muscle::muscle:

2 Me gusta

Hola buenas tardes! Queria saber si pueden ayudarme a bajar los tiempos de ejecucion, y memoria de los problemas, ya que he estado probando los problemas en el oia juez y me quedan sin completar algunas subtareas. gracias.

caso ej (problema: contando numeros):

#include <vector>
#include <iostream>

using namespace std;

long long  pizarra[1000001];
int indice;
void inicializar(){
    indice=0;
    //for (int i=0;i < 10;i++)
      //  cout << pizarra[i];
}

void nuevoNumero(long long  x){
    pizarra[indice]=x;
    indice++;
}
int contar(long long a, long long b){
    int contador = 0;
    if(indice == 0){
        if(pizarra[0] >= a && pizarra[0] <= b){
            contador ++;
        }
        return contador;
}
    else{
        for(int x = 0; x < indice; x++){
        //if(pizarra[x] >= a && pizarra[x] <= b){
        if (pizarra[x] >= a) {
            if (pizarra[x] <= b)
                   contador= 1ll*(contador+1);
        }
    }
    }
    return contador;
}

¡Hola!

Edité el post agregando las tres comillas invertidas ``` justo antes y despues del código, así lo muestra en un formato lindo.

Acá hay un post sobre formato en el foro y otro similar sobre latex en el foro.

Sobre el problema en sí, para hacer esas mismas operaciones que hacés sobre el arreglo pizarra pero en tiempo logarítmico en lugar de lineal, se pueden usar por ejemplo las estructuras de Fenwick Tree o de Segment Tree. Ahí dejé los links en el wiki de OIA correspondientes a sus explicaciones.

1 me gusta