Notas de Programacion Competitiva utilizadas para competencias estilo ICPC generado con Typst. Incluye una plantilla visual reutilizable y secciones por tema con codigo.
Este repositorio esta centrado en dos archivos principales:
- main.typ: punto de entrada del documento, configuracion global de fuentes y secciones.
- lib.typ: plantilla reutilizable, incluyendo reference y code-entry.
- Tarjetas de codigo con code-entry.
- Integracion con codly para resaltado y configuración de código.
- Enlaces a GitHub para archivos fuente (configurable global o por tarjeta).
- Soporte de tema con color o modo monocromatico.
| Paquete | Version | Uso |
|---|---|---|
| catppuccin | 1.0.0 | Tema visual base |
| theorion | 0.3.3 | Cajas y entornos de apoyo |
| codly | 1.3.0 | Render de bloques de codigo |
| codly-languages | 0.1.10 | Lenguajes para codly |
| zebra | 0.1.0 | Generacion de QR |
Las formas mas faciles de usar este proyecto son las siguientes:
- Descarga este repositorio en tu maquina.
- Crea un proyecto en https://typst.app/.
- Sube los archivos del repositorio.
- Abre main.typ y compila.
Puedes abrir un Codespace con un clic usando el boton "Open in GitHub Codespaces" al inicio de este README.
- Abre el repositorio en GitHub y crea un Codespace.
- En la terminal del Codespace instala Typst con:
curl -fsSL https://install.typst.community/install.sh | sh- Verifica la instalacion:
typst --versionRepositorio del script de instalacion: https://github.com/typst-community/typst-install
- Instala Tinymist para facilitar la edicion en VS Code/Codespaces.
Tinymist es una herramienta de apoyo (LSP) para Typst: mejora la experiencia de edicion, pero el motor que compila el proyecto es Typst CLI.
code-entry crea una tarjeta superior y un bloque de codigo debajo (todos los paramétros son opcionales).
#code-entry(
source-file: "",
title: "",
time: "",
space: "",
description: "",
lang: "cpp",
github-base: none,
range: (),
..args,
)- Si alguno de los parámetros se omite, no se coloca en la card.
- La accent-bar siempre se mantiene.
timeyspaceson independientes.- Si se pasa codigo inline por
..args, tiene prioridad sobre source-file. - Si hay
source-filey existegithub-base(local o global), se agrega link en el header del bloque de codigo. rangerenderiza únicamente el rango de líneas ingresado (indexado en 1).
#code-entry(
title: "Kadane's algorithm",
time: $O(n)$,
range: (6, 23),
source-file: "data_structures/kadane.cpp",
)#code-entry(
source-file: "graphs/topological_sort_bfs.cpp",
time: $O(n + m)$,
description: "Version BFS (Kahn)",
)En este caso, la tarjeta conserva la barra de acento superior, pero no muestra fila de titulo.
#code-entry(
title: "Snippet inline",
time: $O(1)$,
)[
```py
print("hello")
```
]main.typ aplica la plantilla asi:
#show: reference.with(
github-base: "https://github.com/sav1209/My-CP-Reference/blob/main/",
// use-color: false,
)- github-base define el prefijo para links automaticos de code-entry.
- use-color permite alternar entre tema a color y monocromatico.
- Guide to Competitive Programming - Antti Laaksonen
- Competitive Programming 4 - Steven Halim, Felix Halim, Suhendry Effendy
- https://github.com/kth-competitive-programming/kactl/
- https://github.com/bqi343/cp-notebook
- https://github.com/alaneos777/reference
- https://github.com/SJMA11723/Data-structures-and-algorithms
- https://github.com/JorgeIba/Reference
- https://github.com/mhunicken/icpc-team-notebook-el-vasito
- https://github.com/josecarlosmemo/summer-icpc-2022
- https://github.com/club-de-algoritmos/algorithms
- https://people.kth.se/~eliasrg/writeups/cheatsheet.pdf
- https://github.com/xavier-povill/pdf-icpc/blob/master/kactl.pdf
- https://ncduy0303.github.io/Competitive-Programming/
- https://github.com/helloproclub/competitive-programming-cheat-sheet?tab=readme-ov-file#11-c-solution-template
- https://dl.icdst.org/pdfs/files3/f27f274cd4c7d0689d21673146af430c.pdf
- https://github.com/jaehyunp/stanfordacm
- https://github.com/kth-competitive-programming/kactl
- https://github.com/ivangalbans/TeamReference/blob/master/reference.pdf
- https://github.com/BedirT/ACM-ICPC-Preparation