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.
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
- 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.
- 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