Idiomas admitidos
omegaUp admite una variedad de lenguajes de programación para participar y practicar en concursos. Esta página documenta cada idioma, su versión y consideraciones específicas.
Descripción general del idioma
| Idioma | Versión | Compilador/Intérprete | Ampliación |
|---|---|---|---|
| C | CCG 10+ | gcc |
.c |
| C++ 11 | CCG 10+ | g++ |
.cpp |
| C++ 17 | CCG 10+ | g++ |
.cpp |
| C++ 20 | CCG 10+ | g++ |
.cpp |
| Java | OpenJDK 17+ | javac |
.java |
| Pitón 3 | 3.10+ | python3 |
.py |
| Pitón 2 | 2.7 (heredado) | python2 |
.py |
| Karel (Pascal) | Personalizado | - | .kp |
| Karel (Java) | Personalizado | - | .kj |
| Rubí | 3.0+ | ruby |
.rb |
| Pascal | Pascal gratuito 3.2+ | fpc |
.pas |
| Haskel | GHC 8.10+ | ghc |
.hs |
| C# | Mono 6.12+ | mcs |
.cs |
| Lúa | 5.4+ | lua |
.lua |
Detalles del idioma
C
Compilador: GCC 10+
Estándar: C11
#include <stdio.h>
int main() {
int n;
scanf("%d", &n);
printf("%d\n", n * 2);
return 0;
}
gcc -std=c11 -O2 -lm -o program program.c
-lm) vinculada automáticamente
- Nivel de optimización -O2 utilizado
C++ (14/11/17/20)
Compilador: GCC 10+
Estándar predeterminado: C++17
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n;
cin >> n;
cout << n * 2 << '\n';
return 0;
}
# C++11
g++ -std=c++11 -O2 -lm -o program program.cpp
# C++14
g++ -std=c++14 -O2 -lm -o program program.cpp
# C++17 (default)
g++ -std=c++17 -O2 -lm -o program program.cpp
# C++20
g++ -std=c++20 -O2 -lm -o program program.cpp
<bits/stdc++.h> está disponible (incluye todos los cabezales estándar)
- E/S rápida recomendada para entradas grandes
- C++17 incluye funciones útiles como enlaces estructurados, if constexpr
- C++20 incluye rangos, conceptos, std::format
Java
Tiempo de ejecución: OpenJDK 17+
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
System.out.println(n * 2);
}
}
javac -encoding UTF-8 Main.java
java -Xmx256m Main
Main
- Codificación UTF-8 compatible
- Límite de memoria superado mediante el indicador -Xmx
- Utilice BufferedReader para E/S más rápidas:
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
PrintWriter pw = new PrintWriter(new BufferedOutputStream(System.out));
int n = Integer.parseInt(br.readLine());
pw.println(n * 2);
pw.flush();
}
}
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
PrintWriter pw = new PrintWriter(new BufferedOutputStream(System.out));
int n = Integer.parseInt(br.readLine());
pw.println(n * 2);
pw.flush();
}
}
Pitón 3
Versión: 3.10+
n = int(input())
print(n * 2)
python3 program.py
sys.stdin para E/S más rápidas:
import sys
input = sys.stdin.readline
n = int(input())
print(n * 2)
numpy - No disponible
- scipy - No disponible
- Sólo biblioteca estándar
Python 2 (heredado)
Versión: 2.7
n = int(raw_input())
print n * 2
raw_input() en lugar de input()
- print es una declaración, no una función
Karel
Karel es un lenguaje simplificado para principiantes, disponible en sintaxis Pascal y Java.
Karel (sintaxis de Pascal):
iniciar-programa
inicia-ejecucion
mientras frente-libre hacer avanza;
gira-izquierda;
termina-ejecucion
finalizar-programa
class program {
program() {
while (frontIsClear()) {
move();
}
turnLeft();
}
}
rubí
Versión: 3.0+
n = gets.to_i
puts n * 2
ruby program.rb
Pascal
Compilador: Pascal 3.2+ gratuito
program Solution;
var
n: integer;
begin
readln(n);
writeln(n * 2);
end.
fpc -O2 program.pas
Haskel
Compilador: GHC 8.10+
main :: IO ()
main = do
n <- readLn :: IO Int
print (n * 2)
ghc -O2 program.hs
C
Compilador: Mono 6.12+
using System;
class Program {
static void Main() {
int n = int.Parse(Console.ReadLine());
Console.WriteLine(n * 2);
}
}
mcs program.cs
mono program.exe
lua
Versión: 5.4+
local n = io.read("*n")
print(n * 2)
lua program.lua
Guía de selección de idioma
Por tipo de problema
| Tipo de problema | Recomendado | Alternativa |
|---|---|---|
| E/S sencillas | Pitón 3 | C++ |
| Límite de tiempo ajustado | C++ | C |
| Manipulación de cadenas | Pitón 3 | Rubí |
| Matemática | Pitón 3 | Haskel |
| Estructuras de datos | C++ | Java |
| Principiantes | Karel | Pitón 3 |
Por límite de tiempo
| Límite de tiempo | Idiomas recomendados |
|---|---|
| < 0,5 s | C, C++ |
| 0,5s - 1s | C++, Java |
| 1s - 2s | C++, Java, Python 3 (sencillo) |
| > 2s | Cualquiera |
Consejos de rendimiento de E/S
E/S rápida en C++
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
// Your code here
return 0;
}
E/S rápida en Java
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
// Your code here
}
}
E/S rápida en Python
import sys
input = sys.stdin.readline
print = sys.stdout.write
# For output, use print(str(x) + '\n')
Banderas del compilador
Compilación de depuración (local)
# C++
g++ -std=c++17 -O2 -Wall -Wextra -Wshadow -g -fsanitize=address,undefined
# Java
javac -Xlint:all
Compilación de producción (juez)
# C++
g++ -std=c++17 -O2 -lm
# C
gcc -std=c11 -O2 -lm
# Pascal
fpc -O2
# Haskell
ghc -O2
Errores comunes
Desbordamiento de enteros
| Idioma | rango entero | Uso para números grandes |
|---|---|---|
| C/C++ | -2³¹ a 2³¹-1 | long long |
| Java | -2³¹ a 2³¹-1 | long o BigInteger |
| Pitón | Ilimitado | Incorporado |
Problemas de precisión
Comparación de coma flotante:
// Wrong
if (a == b)
// Correct
const double EPS = 1e-9;
if (abs(a - b) < EPS)
Límites de memoria
Límites de tamaño de pila (profundidad de recursividad):
| Idioma | Pila predeterminada | Solución |
|---|---|---|
| C++ | ~1MB | Utilice pila explícita |
| Java | ~1MB | Aumentar con -Xss |
| Pitón | ~1000 llamadas | sys.setrecursionlimit() |
Documentación relacionada
- Runner Internals - Detalles de ejecución
- Veredictos - Comprender los errores
- API de problemas - Configuración de problemas