Submission #4241658


Source Code Expand

using System;
using System.Collections.Generic;
using System.Linq;
namespace Practice
{
	class Program
	{
		static void Main(string[] args)
		{
			Solve();
		}
		private const int MOD = 1000000007;
		static void Solve()
		{
			string s = Console.ReadLine();
			bool isN = false;
			bool isW = false;
			bool isS = false;
			bool isE = false;
			for(int i=0;i<s.Length;++i)
			{
				switch(s[i])
				{
					case 'N': isN = true; break;
					case 'W': isW = true; break;
					case 'S': isS = true; break;
					case 'E': isE = true; break;
				}
			}

			bool b = ((isN && isS) || (!isN && !isS)) && ((isW && isE) || (!isW && !isE));
			string ans = b ? "Yes" : "No";
			Console.WriteLine(ans);
		}
		#region よく使う便利関数
		private static bool isPrime(long x)
		{
			if(x == 2) { return true; }
			if(x < 2 || x % 2 == 0) { return false; }
			long i = 3;
			while(i * i <= x)
			{
				if(x % i == 0) { return false; }
				i = i + 2;
			}
			return true;
		}
		private static long lcm(long x, long y)
		{
			return x / gcd(x, y) * y;
		}
		private static long gcd(long x, long y)
		{
			return y > 0 ? gcd(y, x % y) : x;
		}
		private static long pow(long x, long n)
		{
			if(n == 0) { return 1; }
			long res = pow(x * x % MOD, n / 2);
			if(n % 2 == 1)
			{
				res = res * x % MOD;
			}
			return res;
		}
		private static int ReadAndParseInt()
		{
			return int.Parse(Console.ReadLine());
		}
		private static int[] ReadAndParseIntArr()
		{
			return Array.ConvertAll(Console.ReadLine().Split(' '), int.Parse);
		}
		private static long ReadAndParseLong()
		{
			return long.Parse(Console.ReadLine());
		}
		private static long[] ReadAndParseLongArr()
		{
			return Array.ConvertAll(Console.ReadLine().Split(' '), long.Parse);
		}

		/// <summary>
		/// 指定した値以上の先頭のインデクスを返す
		/// </summary>
		/// <typeparam name="T">比較する値の型</typeparam>
		/// <param name="arr">対象の配列(※ソート済みであること)</param>
		/// <param name="start">開始インデクス [inclusive]</param>
		/// <param name="end">終了インデクス [exclusive]</param>
		/// <param name="value">検索する値</param>
		/// <param name="comparer">比較関数(インターフェイス)</param>
		/// <returns>指定した値以上の先頭のインデクス</returns>
		public static int LowerBound<T>(IReadOnlyList<T> arr, int start, int end, T value, IComparer<T> comparer)
		{
			int low = start;
			int high = end;
			int mid;
			while(low < high)
			{
				mid = ((high - low) >> 1) + low;
				if(comparer.Compare(arr[mid], value) < 0)
					low = mid + 1;
				else
					high = mid;
			}
			return low;
		}

		//引数省略のオーバーロード
		public static int LowerBound<T>(IReadOnlyList<T> arr, T value) where T : IComparable
		{
			return LowerBound(arr, 0, arr.Count, value, Comparer<T>.Default);
		}

		/// <summary>
		/// 指定した値より大きい先頭のインデクスを返す
		/// </summary>
		/// <typeparam name="T">比較する値の型</typeparam>
		/// <param name="arr">対象の配列(※ソート済みであること)</param>
		/// <param name="start">開始インデクス [inclusive]</param>
		/// <param name="end">終了インデクス [exclusive]</param>
		/// <param name="value">検索する値</param>
		/// <param name="comparer">比較関数(インターフェイス)</param>
		/// <returns>指定した値より大きい先頭のインデクス</returns>
		public static int UpperBound<T>(IReadOnlyList<T> arr, int start, int end, T value, IComparer<T> comparer)
		{
			int low = start;
			int high = end;
			int mid;
			while(low < high)
			{
				mid = ((high - low) >> 1) + low;
				if(comparer.Compare(arr[mid], value) <= 0)
					low = mid + 1;
				else
					high = mid;
			}
			return low;
		}

		//引数省略のオーバーロード
		public static int UpperBound<T>(IReadOnlyList<T> arr, T value)
		{
			return UpperBound(arr, 0, arr.Count, value, Comparer<T>.Default);
		}
		#endregion
	}
}

Submission Info

Submission Time
Task A - Wanna go back home
User masakam1
Language C# (Mono 4.6.2.0)
Score 200
Code Size 4155 Byte
Status AC
Exec Time 20 ms
Memory 13140 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 200 / 200
Status
AC × 4
AC × 15
Set Name Test Cases
Sample s1.txt, s2.txt, s3.txt, s4.txt
All 01.txt, 04.txt, 05.txt, 06.txt, 07.txt, 08.txt, 09.txt, 10.txt, 11.txt, 13.txt, 15.txt, s1.txt, s2.txt, s3.txt, s4.txt
Case Name Status Exec Time Memory
01.txt AC 20 ms 11092 KB
04.txt AC 20 ms 11092 KB
05.txt AC 20 ms 9044 KB
06.txt AC 20 ms 11092 KB
07.txt AC 20 ms 9044 KB
08.txt AC 19 ms 9044 KB
09.txt AC 20 ms 11092 KB
10.txt AC 20 ms 11092 KB
11.txt AC 20 ms 11092 KB
13.txt AC 20 ms 13140 KB
15.txt AC 20 ms 11092 KB
s1.txt AC 20 ms 11092 KB
s2.txt AC 20 ms 9044 KB
s3.txt AC 20 ms 11092 KB
s4.txt AC 20 ms 11092 KB