AOJ1119 Exploring Caves

問題リンク Exploring Caves

  • 概要

最初(0, 0)の点にいる。移動量のリストが与えられる。これらの移動の中でスタート地点からの距離が最も遠かった点の位置を答えよ。そのような点が複数ある場合はx座標のより大きいものを答えよ。

  • 解法

入力で与えられた通りに移動するだけです。
また、スタートからの距離は大きさの比較さえできればいいのでわざわざ平方根を取らなくても大丈夫です。

  • ソース
import java.util.Scanner;

//Exploring Caves
public class AOJ1119 {

	void run(){
		Scanner sc = new Scanner(System.in);
		int t = sc.nextInt();
		while(t--!=0){
			int max = 0;
			int tx = 0, ty = 0;
			int x = 0, y = 0;
			for(;;){
				int dx = sc.nextInt();
				int dy = sc.nextInt();
				if(dx==0&&dy==0)break;
				x+=dx; y+=dy;
				int d = x*x+y*y;
				if(max<d){
					max = d;
					tx = x; ty = y;
				}
				else if(max==d&&tx<x){
					tx = x; ty = y;
				}
			}
			System.out.println(tx+" "+ty);
		}
	}
	
	public static void main(String[] args) {
		new AOJ1119().run();
	}
}