結果
問題 | No.274 The Wall |
ユーザー |
|
提出日時 | 2015-10-07 22:00:34 |
言語 | C#(csc) (csc 3.9.0) |
結果 |
TLE
|
実行時間 | - |
コード長 | 4,238 bytes |
コンパイル時間 | 870 ms |
コンパイル使用メモリ | 115,748 KB |
実行使用メモリ | 34,608 KB |
最終ジャッジ日時 | 2024-07-20 02:00:12 |
合計ジャッジ時間 | 4,839 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 9 TLE * 1 -- * 12 |
コンパイルメッセージ
Microsoft (R) Visual C# Compiler version 3.9.0-6.21124.20 (db94f4cc) Copyright (C) Microsoft Corporation. All rights reserved.
ソースコード
using LIB;using System;using System.Linq;using System.Text;using System.Collections.Generic;class Program{static int[][] wall;static int n;static int m;static Dictionary<int, bool> check = new Dictionary<int, bool>();static int[] rotate(int[] source){return source.Reverse().ToArray();}static bool wallcheck(int now){bool ret = false;if (now == n){ret = true;}else{bool nowcheck = true;for (int i = wall[now][0]; i <= wall[now][1]; i++){if (check[i] == true){nowcheck = false;break;}}if (nowcheck == true){for (int i = wall[now][0]; i <= wall[now][1]; i++){check[i] = true;}ret = wallcheck(now + 1);if (ret == false){for (int i = wall[now][0]; i <= wall[now][1]; i++){check[i] = false;}}}if (ret == false){int bufmin = wall[now][0];int bufmax = wall[now][1];wall[now][0] = m - bufmax - 1;wall[now][1] = m - bufmin - 1;nowcheck = true;for (int i = wall[now][0]; i <= wall[now][1]; i++){if (check[i] == true){nowcheck = false;break;}}if (nowcheck == true){for (int i = wall[now][0]; i <= wall[now][1]; i++){check[i] = true;}ret = wallcheck(now + 1);if (ret == false){for (int i = wall[now][0]; i <= wall[now][1]; i++){check[i] = false;}}}bufmin = wall[now][0];bufmax = wall[now][1];wall[now][0] = m - bufmax - 1;wall[now][1] = m - bufmin - 1;}}return ret;}static void Main(string[] args){int[] buf = io.r<int>(' ');n = buf[0];m = buf[1];wall = io.r<int>(n, ' ');for (int i = 0; i < m; i++){check[i] = false;}bool ret = wallcheck(0);string output = "NO";if (ret == true){output = "YES";}io.w(output);io.wflush();}}namespace LIB{public class io{private const int WMAX = 1000;private static StringBuilder S = new StringBuilder();public static T r<T>() { return util.parse<T>(r()); }public static T[] r<T>(char s = ' ') { return r().Split(s).Select(util.parse<T>).ToArray(); }public static T[] r<T>(int l) { T[] r = new T[l]; for (int i = 0; i < l; i++) { r[i] = r<T>(); } return r; }public static T[][] r<T>(int l, char s = ' ') { T[][] r = new T[l][]; for (int i = 0; i < l; i++) { r[i] = r<T>(s); } return r; }private static string r() { return Console.ReadLine(); }public static void w(object v, bool lf = true) { S.Append(util.parse<string>(v)); if (lf == true) { S.Append('\n'); } if (S.Length >= WMAX) {wflush(); } }public static void wflush() { Console.Write(S.ToString()); S.Clear(); }}public class util{public static T parse<T>(object value) { return (T)(Convert.ChangeType(value, typeof(T))); }}public class memo<Key, Result>{private Dictionary<Key, Result> R;public memo() { R = new Dictionary<Key, Result>(); }public Result exec(Key k, Func<Key, Result> f) { Result r; if (R.ContainsKey(k)) { r = R[k]; } else { r = f(k); R.Add(k, r); } return r; }}}