Primera práctica · C++17

Tu primer problema,
paso a paso.

Vamos a resolver uno del TAP: entender qué pide, escribir un programa, probarlo y enviarlo al juez. El objetivo es llegar a tu primer Accepted, o AC.

¿Todavía no programaste en C++?

Antes de seguir, necesitás poder ejecutar un programa, leer números y usar un if / else. Podés empezar con la plantilla de C++, entrada y salida y condiciones.

Si todavía no tenés un entorno de C++ funcionando, pedinos una mano en la comunidad. También podés seguir el razonamiento y volver al código después.

1

Leé qué entra y qué sale

A la mitad · TAP 2026, problema A (At the midpoint en Codeforces)

La competencia dura cinco horas. Recibís cuánto tiempo pasó y tenés que decidir si estás antes, justo en la mitad o después.

  • Entrada: tres enteros, horas, minutos y segundos. El programa los lee; no los elige.
  • Salida: un único signo: - si falta, = si estás justo a la mitad, + si ya pasó.

Leé también los límites y los ejemplos del enunciado. Son parte de lo que tu programa tiene que cumplir.

2

Pensá en una sola unidad

La mitad está en 2 horas, 30 minutos, 0 segundos. Para comparar sin separar muchos casos, pasá todo a segundos:

1 hora3600 segundos
1 minuto60 segundos
La mitad9000 segundos

El tiempo transcurrido es horas * 3600 + minutos * 60 + segundos. Ahora solo comparás ese número con 9000: menor, igual o mayor.

Por ejemplo, 1 hora, 2 minutos y 3 segundos son 3723 segundos. Como 3723 es menor que 9000, la respuesta es -. Podés usar enteros: no hacen falta decimales.

3

Escribí tu versión

Leé los tres valores con cin, calculá los segundos y usá if / else if / else para elegir el signo. Con cout, imprimí solo la respuesta y un salto de línea.

Podés consultar variables, condiciones y cuentas enteras mientras lo hacés.

Usar una plantilla incompleta

Guardala como primer-ac.cpp y completá lo que indican los comentarios. Ya lee la entrada; todavía no calcula ni imprime la respuesta.

Plantilla para completar
#include <iostream>
using namespace std;

int main() {
    int horas, minutos, segundos;
    cin >> horas >> minutos >> segundos;

    // Converti el tiempo a segundos.
    // Comparalo con la mitad de cinco horas.
    // Imprimi un solo signo: -, = o +, y un salto de linea.

    return 0;
}

Apunte de apoyo: plantilla, variables, entrada y salida, condiciones y cuentas enteras, con explicaciones y ejemplos.

Descargar apunte de este problema (PDF) ↓
4

Probalo antes de enviarlo

Ejecutá tu programa una vez por cada fila. Las primeras tres son los ejemplos del enunciado; las otras dos prueban los bordes de la mitad.

EntradaSalidaQué comprobás
1 2 3-Todavía no llegaste a la mitad.
3 1 2+Ya pasaste la mitad.
2 30 0=Estás exactamente en la mitad.
2 29 59-Falta un segundo.
2 30 1+Pasó un segundo.

En este problema hay una sola entrada por ejecución. La salida debe ser el signo, sin mensajes como «Ingresá las horas» o «La respuesta es».

Cómo probarlo en Visual Studio Code
  1. Abrí en Visual la carpeta donde guardaste primer-ac.cpp y guardá los cambios con Ctrl + S.
  2. Abrí el panel inferior con Ctrl + J y elegí Terminal.
  3. Escribí este comando y pulsá Enter para preparar el programa:
    g++ -std=c++17 primer-ac.cpp -o primer-ac
  4. Si no aparecen errores, ejecutalo en esa misma terminal:
    ./primer-ac
  5. Ingresá los tres valores, pulsando Enter después de cada número. Para la primera prueba:
    1
    2
    3
    El programa debería responder -.

Para probar otra fila, volvé a ejecutar ./primer-ac e ingresá sus tres valores. Si cambiás el código, guardalo y repetí primero el comando g++.

Ver una implementación explicada

Si te trabaste o querés comparar tu versión, esta implementación sigue el razonamiento de arriba.

Una implementación posible
#include <iostream>
using namespace std;

int main() {
    int horas, minutos, segundos;
    cin >> horas >> minutos >> segundos;

    int transcurrido = horas * 3600 + minutos * 60 + segundos;
    int mitad = 5 * 3600 / 2;

    if (transcurrido < mitad) {
        cout << '-' << '\n';
    } else if (transcurrido > mitad) {
        cout << '+' << '\n';
    } else {
        cout << '=' << '\n';
    }

    return 0;
}

  • transcurrido reúne las tres unidades en segundos.
  • mitad calcula la mitad de las cinco horas: 9000 segundos.
  • Las tres ramas imprimen -, + o =, según la comparación.
5

Enviá tu solución al juez

El juez ejecuta tu programa con más entradas que las de los ejemplos y compara sus respuestas.

  1. Abrí A. At the midpoint en Codeforces. Iniciá sesión con Enter o creá una cuenta con Register.
  2. Si aparece el recuadro Practice?, registrate para practicar ese torneo y habilitar los envíos.
  3. Entrá en Submit Code. Comprobá que elegiste el problema A y un compilador de C++17 o posterior.
  4. Pegá el código completo o adjuntá tu archivo .cpp. Enviá el programa, no el ejecutable ni la salida de un ejemplo.
  5. Revisá el resultado en My Submissions. Si está en cola o evaluándose, esperá el veredicto.
Accepted · AC
Pasó las pruebas del juez. ¡Ya tenés tu primer problema aceptado!
Wrong answer · WA
Alguna salida no coincide. Revisá la conversión, la igualdad y los casos alrededor de 2:30:00.
Compilation error · CE
No pudo compilar. Leé el primer error y revisá la sintaxis y el lenguaje elegido.
Me apareció otro resultado

Runtime error: el programa falló al ejecutarse; revisá el código y la lectura de datos. Time limit exceeded: no terminó a tiempo; en este ejercicio, fijate si agregaste algún bucle que no termina.

Si no encontrás el error, traé tu código y tus pruebas a la comunidad.

Ir al problema en Codeforces ↗
6

Elegí tu próximo desafío

Que sea Inicial no significa que tenga que salirte enseguida. Cada problema puede pedir una idea que todavía no conocés. Probá, consultá herramientas y pedí ayuda cuando la necesites.

¿Qué significan las dificultades de la página?
Inicial
Herramientas básicas, cuentas y observaciones puntuales. Empezá por acá.
Consolidación
Más casos y más cuidado al combinar las herramientas de base.
Salto regional
Empiezan a pesar técnicas y modelos más específicos.
Avanzado
Ideas más profundas o varias técnicas que se combinan.
Top global
Problemas extremos que hoy quedan fuera de nuestros apuntes.

Son bandas orientativas del club, no ratings oficiales de Codeforces. Podés recorrer los Iniciales y después probar Consolidación.

Guía del Club de Algoritmia. Referencias: enunciado oficial del TAP 2026 y problema en Codeforces.