AtCoder Grand Contest 003

Submission #4241658

Source codeソースコード

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

Task問題 A - Wanna go back home
User nameユーザ名 masakam1
Created time投稿日時
Language言語 C# (Mono 4.6.2.0)
Status状態 AC
Score得点 200
Source lengthソースコード長 4155 Byte
File nameファイル名
Exec time実行時間 20 ms
Memory usageメモリ使用量 13140 KB

Test case

Set

Set name Score得点 / Max score Cases
Sample - s1.txt,s2.txt,s3.txt,s4.txt
All 200 / 200 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

Test case

Case name Status状態 Exec time実行時間 Memory usageメモリ使用量
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