some image

Codes and Tags

Solucionando : Enormous Input

Etiquetas: , Blog, Challenges No comments

Este es uno de los ejercicios de optimización, que a uno lo llevan a sacar conclusiones para el tratamiento de los datos luego de hacer el primer envio y obtener como respuesta : Time Limit Exceeded.  Luego de leer un FAQ proporcionado por la pagina de codechef existe una serie de consideraciones.

Consideraciones a tener en cuenta

+ La clase BufferedReader es mucho más rápida procesando Streams que la clase Scanner.

+ Utilizar variables que ocupen menos espacio en memoria para que la aplicación se ejecute más rápido. Ejemplo : Si el ejercicio se presta para utilizar Integer (int), en vez de Long (long), es preferieble darle la prioridad a los enteros más pequeños.

+ La clase StringTokenizer es de gran utilidad para trabajar con datos que vienen separados por algún espacio, coma, etc… en vez de utilizar el método split() de la clase String.

Solución

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
class EnormousInput {
	public static void main(String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String input = br.readLine();
		StringTokenizer st = new StringTokenizer(input);		
		// Lines in the input
		int lines = Integer.parseInt(st.nextToken());
		int k = Integer.parseInt(st.nextToken());
		// Times that k is divisible by t
		int times = 0;
		for(int i = 0; i < lines; i++){
			if(Integer.parseInt(br.readLine())%k == 0){
				times++;
			}
		}
		System.out.println(times);
	}
}

Salu2

About Edwin Torres

Related Posts

  • Code Chef Logo
  • Code Chef Logo
  • Code Chef Logo
  • Code Chef Logo

Add your comment