¿Qué estructura de datos o algoritmo puedo usar para almacenar más información usando mucho menos memoria y decidir el lenguaje de programación que se usará?

La estructura de datos y los algoritmos van de la mano.
Primero necesitas finalizar qué información. necesita almacenar, determinar la dinamismo en los campos de información, esto le dará el alcance de las variables que tratará.
En cualquier algoritmo, los datos listos o la información disponible requieren una parte importante de la memoria (por supuesto, no aplicable a todos los problemas).
Analice y categorice la variable con atributos como, longitud fija, longitud variable, valor fijo, fijo desde el conjunto de valores, longitud variable y variable cambiante, longitud fija y variable, etc.
Haga lo mismo para la información de salida.
A partir de este análisis obtendrá una mejor imagen de cómo resolver su problema. adopte un lenguaje adecuado que proporcione construcciones que le proporcionen facilidad o flexibilidad para diseñar algoritmos. Adapte sus estructuras de datos con construcciones de lenguajes de programación.
Como se da un requisito para minimizar el uso de la memoria, yo personalmente iría con ‘C’ (no implica que no pueda codificar la memoria de manera eficiente en otros). La construcción como enum, uniones, ayuda de la estructura de bytes en el ahorro de uso de la memoria.
El resto es tu lógica, ¿cómo explotar estas estructuras?
También use las herramientas del generador de perfiles de memoria después de que el código lo ayude a encontrar áreas que usen mucha memoria o más, ¿intente encontrar las razones por las que lo hace?
Hay varias estrategias algorítmicas que puede aplicar según la naturaleza del problema. Ejemplo: programación codiciosa, óptima, dinámica, divide-n-conquista, etc.