¿Cómo empezar con la Programación Competitiva?

 

Al comienzo de la programación competitiva, casi nadie conoce el estilo de codificación a seguir. A continuación se muestra un ejemplo para ayudarlo a comprender cómo se elaboran los problemas en la programación competitiva.
 

competitive-programming

Consideremos el siguiente enunciado del problema como ejemplo. 
Planteamiento del problema: 
 

 

Búsqueda lineal: dada una array de enteros y un elemento x, encuentre si el elemento está presente en la array o no. Si el elemento está presente, imprime el índice de su primera aparición. De lo contrario, imprima -1.
Entrada: 
la primera línea contiene un número entero, el número de casos de prueba ‘T’. Cada caso de prueba debe ser un número entero. Tamaño de la array ‘n’ en la segunda línea. En la tercera línea, ingrese los elementos enteros de la array en una sola línea separados por espacios. El elemento X debe ingresarse en la cuarta línea, es decir, después de ingresar los elementos de la array. Repita los pasos anteriores de la segunda línea en adelante para múltiples casos de prueba.
Salida: 
imprime la salida en una línea separada que devuelve el índice del elemento X. Si el elemento no está presente, imprime -1.
Restricciones: 
1 <= T <= 100 
1 <= n <= 100 
1 <= arr[i] <= 100
Ejemplo de entrada y salida para su programa: 
 

Input:
2
4
1 2 3 4
3
5
10 90 20 30 40 
40
Output:
2
4

Explicación: 
 

There are 2 test cases (Note 2 at the beginning of input)
Test Case 1: Input: arr[] = {1, 2, 3, 4},  
                    Element to be searched = 3.
             Output:  2
             Explanation: 3 is present at index 2.

Test Case 2: Input: arr[] = {10, 90, 20, 30, 40}, 
                    Element to be searched = 40.
             Output:  4
             Explanation: 40 is present at index 4.

C

// A Sample C program for beginners with Competitive Programming
#include<stdio.h>
 
// This function returns index of element x in arr[]
int search(int arr[], int n, int x)
{
    int i;
    for (i = 0; i < n; i++)
    {
       // Return the index of the element if the element
       // is found
       if (arr[i] == x)
         return i;
    }
 
    //return -1 if the element is not found
    return -1;
}
 
int main()
{
    // Note that size of arr[] is considered 100 according to
    // the constraints mentioned in problem statement.
    int arr[100], x, t, n, i;
 
    // Input the number of test cases you want to run
    scanf("%d", &t);
 
    // One by one run for all input test cases
    while (t--)
    {
        // Input the size of the array
        scanf("%d", &n);
 
        // Input the array
        for (i=0; i<n; i++)
           scanf("%d",&arr[i]);
 
        // Input the element to be searched
        scanf("%d", &x);
 
        // Compute and print result
        printf("%d\n", search(arr, n, x));
    }
    return 0;
}

C++

// A Sample C++ program for beginners with Competitive Programming
#include<iostream>
using namespace std;
 
// This function returns index of element x in arr[]
int search(int arr[], int n, int x)
{
    for (int i = 0; i < n; i++)
    {
        // Return the index of the element if the element
        // is found
        if (arr[i] == x)
            return i;
    }
 
    // return -1 if the element is not found
    return -1;
}
 
int main()
{
    // Note that size of arr[] is considered 100 according to
    // the constraints mentioned in problem statement.
    int arr[100], x, t, n;
 
    // Input the number of test cases you want to run
    cin >> t;
 
    // One by one run for all input test cases
    while (t--)
    {
        // Input the size of the array
        cin >> n;
 
        // Input the array
        for (int i=0; i<n; i++)
            cin >> arr[i];
 
        // Input the element to be searched
        cin >> x;
 
        // Compute and print result
        cout << search(arr, n, x) << "\n";
    }
    return 0;
}

Python3

# A Sample Python program for beginners with Competitive Programming
 
# Returns index of x in arr if it is present,
# else returns -1
def search(arr, x):
    n = len(arr)
    for j in range(0,n):
        if (x == arr[j]):
            return j
    return -1
 
# Input number of test cases
t = int(input())
 
# One by one run for all input test cases
for i in range(0,t):
 
    # Input the size of the array
    n = int(input())
 
    # Input the array
    arr = map(int, input().split())
 
    # Input the element to be searched
    x = int(input())
 
    print(search(arr, x))
 
    # The element can also be searched by index method
    # But you need to handle the exception when element is not found
    # Uncomment the below line to get that working.
    # arr.index(x)

Java

// A Sample Java program for beginners with Competitive Programming
import java.util.*;
import java.lang.*;
import java.io.*;
 
class LinearSearch
{
    // This function returns index of element x in arr[]
    static int search(int arr[], int n, int x)
    {
        for (int i = 0; i < n; i++)
        {
            // Return the index of the element if the element
            // is found
            if (arr[i] == x)
                return i;
        }
 
        // return -1 if the element is not found
        return -1;
    }
 
    public static void main (String[] args) throws IOException
    {
        // Note that size of arr[] is considered 100 according to
        // the constraints mentioned in problem statement.
        int[] arr = new int[100];
 
        // Using BufferedReader class to take input
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
         
        int t = Integer.parseInt(br.readLine());
         
        // String Buffer to store answer
        StringBuffer sb = new StringBuffer();
 
        // One by one run for all input test cases
        while (t > 0)
        {
            // Input the size of the array
            int n = Integer.parseInt(br.readLine());
 
            // to read multiple integers line
            String line = br.readLine();
            String[] strs = line.trim().split("\\s+");
             
            // Input the array
            for (int i = 0; i < n; i++)
                arr[i] = Integer.parseInt(strs[i]);
 
            // Input the element to be searched
            int x = Integer.parseInt(br.readLine());
 
            // Compute and print result
            sb.append(search(arr, n, x)+"\n");
 
            t--;
        }
         
        System.out.print(sb);
    }
}

Errores comunes de los principiantes 
 

  1. El programa no debe imprimir ningún carácter adicional. Escribir una declaración como printf («Ingrese el valor de n») provocaría el rechazo en cualquier plataforma.
  2. Las especificaciones del formato de entrada y salida deben leerse detenidamente. Por ejemplo, la mayoría de los problemas esperan una nueva línea después de cada salida. Entonces, si no escribimos printf(“\n”) o una declaración equivalente en un ciclo que se ejecuta para todos los casos de prueba, el programa sería rechazado.

¿Cómo comenzar la práctica?  
Puede comenzar con el problema anterior en sí. Intente enviar una de las soluciones anteriores aquí . Se recomienda resolver problemas en Práctica para descifrar cualquier entrevista de codificación .
Ahora que sabe cómo escribir su primer programa en un entorno de programación competitiva, puede comenzar con problemas de práctica escolar para programación competitiva o problemas de práctica básica para programación competitiva .
¿Cómo comenzar a estudiar?  
Los 10 mejores algoritmos y estructuras de datos para la programación competitiva.  
Visite aquí para decidir qué categoría le conviene más. 
Consulte esto para obtener más preguntas frecuentes para principiantes.
¿Cómo prepararse para ACM – ICPC?
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
 

Cursos relacionados

Programación Competitiva – Curso en Vivo

Dé rienda suelta al programador competitivo que lleva dentro con nuestra Programación Competitiva – Curso en Vivo . En este curso, aprenderá temas importantes de DSA, mejorará las habilidades de codificación y resolución de problemas, varias técnicas para la programación competitiva y la implementación eficiente de algoritmos matemáticos. Tan pronto como empieces, mejores serán tus habilidades de programación. ¡Inscribirse ahora! ¡Nos vemos dentro del curso!

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *