Una plantilla de C++ para competencia
Comité ICPC Bolivia
En competencia, el tiempo que pasas escribiendo código repetitivo es tiempo que no pasas pensando. Una plantilla acordada de antemano ahorra varios minutos por problema.
La plantilla mínima
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int t = 1;
// cin >> t; // descomenta si el problema trae múltiples casos
while (t--) {
// solución
}
return 0;
}
Eso es todo lo que la mayoría de problemas necesita. Resiste la tentación de arrastrar doscientas líneas de macros: una plantilla que no entiendes completa es una fuente de errores, no una ventaja.
Por qué esas dos líneas de main
ios::sync_with_stdio(false) desactiva la sincronización entre los flujos de C++ y los
de C. cin.tie(nullptr) evita que cin fuerce un vaciado de cout antes de cada
lectura.
Juntas convierten cin/cout en algo comparable a scanf/printf en velocidad. En un
problema con cientos de miles de líneas de entrada, la diferencia decide entre aceptado y
time limit exceeded.
Desbordamiento: el error más caro
El error más frecuente en competencia no es algorítmico, es de tipos. int en la práctica
llega hasta unos 2 × 10⁹; una suma de 10⁵ elementos de tamaño 10⁵ ya se sale.
El alias using ll = long long; está en la plantilla precisamente para que usarlo cueste
dos caracteres. Cuando dudes, usa ll: el costo en memoria es irrelevante comparado con
una penalización.
El cuaderno de equipo
Todo lo que tarde más de diez minutos en escribirse de memoria debería estar impreso en el cuaderno del equipo: estructuras de datos, algoritmos de grafos, aritmética modular, geometría básica.
El reglamento 2026 permite material impreso en la cantidad que determine la sede. Confirma el límite local antes de competir y prepara el cuaderno como parte del entrenamiento, no como un trámite de última hora.
Más material en recursos y en las guías de CP-Algorithms.