1 / 5
Feb 2017

Witam, rozwiazywalam to zadanie i napisalam taki program :
` import java.util.Scanner;

public class Main {

//TODO skrocic to by zajmowalo jak njamniej czasu

public static void main(String[] args) {
    
    @SuppressWarnings("resource")
    Scanner odczyt = new Scanner(System.in);
    
    int naszeX = odczyt.nextInt();
    int naszeY = odczyt.nextInt();
    
    int n = odczyt.nextInt();
    
    odczyt.nextLine();
    
    double najwieksza = -1;
    String napisnajmniejsza = "";
    
    for(;n>=1; n--){
        int x = odczyt.nextInt();
        int y = odczyt.nextInt();
        
        double odleglosc =  Math.sqrt(Math.pow(Math.abs(naszeX - x), 2) + Math.pow(Math.abs(naszeY - y),2));
            
        if(odleglosc > najwieksza){
            najwieksza = odleglosc ;
            napisnajmniejsza = x + " "+y;
        }
    }
    System.out.println(napisnajmniejsza);
    System.out.println(Math.round(najwieksza*100.0)/100.0);
    
    odczyt.nextLine();
}

}

`
I wszystko działa, tylko pokazuje mi się że przekroczono limit czasowy i zastanawiam się co w moim kodzie zajmuje tyle czasu i jak to skrócić ? Z góry dziękuje za pomoc.

  • created

    Feb '17
  • last reply

    Feb '17
  • 4

    replies

  • 462

    views

  • 3

    users

  • 3

    likes

  • 2

    links

Witaj @gab123 !!

Limit 1 sek, nie jest wcale miałym [ani małym też nie] limitem, więc proszę Cię przestań pisać bzdurne komentarze pod zadaniami. Od tego jest forum. Co do przyśpieszenia twojego programu, aby zajmował jak njamniej :wink: czasu, to może tu coś znajdziesz?: http://213.192.104.217/phpBB3-spoj-pl-backup/viewtopic.php?f=10&t=1209&sid=c894e247b86f2c1bc57eb73bf83fd15d6

PS
Co do komentarzy pod zadaniami, uważam, że, najlepiej zrobiłabyś, gdybyś je wyedytowała i skasowała. Czy np naprawdę, uważasz, że zadanie ostatnia niezerowa cyfra silni jest aż takie łatwe?

Scanner w JAVIE jest baaaaardzo wolny i jeśli chcesz mieścić się w czasie polecam inne rozwiązania. W większości przypadków BufferedReader, PrintWriter wystarczą. W innych przypadkach musisz bardziej pokombinować.
W tym przypadku zastosowanie BufferedReader i PrintWriter pozwolą Ci zmieścić się w czasie.

Dzięki, użyłam BufferReader ale oddaję mi zły wynik : np. jak mam :` BufferedReader in= new BufferedReader(new InputStreamReader(System.in));

    int naszeX = in.read();
    int naszeY = in.read();

    System.out.println(naszeX + " "+naszeY);`

To gdy wpisuje 0 0. Potem dostaję : 48 32
W ogóle nie rozumiem czemu...