2000-Mysterious Gems

http://rose.u-aizu.ac.jp/onlinejudge/ProblemSet/description.jsp?id=2000&lang=jp
考え方
与えられる数値が対して大く無いので、シミュレートするだけで間に合う。
実装(Java)

import java.util.*;

public class Main{
	public static void main(String[] args) {
		Scanner scanner=new Scanner(System.in);
		int N;Vector<Integer> x,y;
		for(;;){
			N=scanner.nextInt();
			if(N==0)break;
			x=new Vector<Integer>();y=new Vector<Integer>();
			for(int i=0;i<N;i++){
				x.add(scanner.nextInt());
				y.add(scanner.nextInt());
			}
			int rx=10,ry=10,M=scanner.nextInt(),mv,res=0;String in;
			for(int j=0;j<M;j++){
				in=scanner.next();mv=scanner.nextInt();
				int dx,dy;
				if(in.equals("N")){
					dx=0;dy=1;
				}else if(in.equals("E")){
					dx=1;dy=0;
				}else if(in.equals("W")){
					dx=-1;dy=0;
				}else{
					dx=0;dy=-1;
				}
				for(int k=0;k<mv;k++){
					rx+=dx;ry+=dy;
					for(int i=0;i<N;i++){
						if(x.get(i)==rx&&y.get(i)==ry){
							res++;
							x.set(i,-100);
							y.set(i,-100);
						}
					}
				}
			}
			if(res==N){
				System.out.println("Yes");
			}else{
				System.out.println("No");
			}
		}
	}

}