結果

問題 No.232 めぐるはめぐる (2)
ユーザー pekempey
提出日時 2015-06-26 23:24:04
言語 C++11
(gcc 4.8.5)
結果
WA  
(最新)
AC  
(最初)
実行時間 -
コード長 2,103 Byte
コンパイル時間 1,026 ms
使用メモリ 8,916 KB
最終ジャッジ日時 2019-10-24 02:36:14

テストケース

テストケース表示
入力 結果 実行時間
使用メモリ
0.in AC 136 ms
6,888 KB
1.in AC 144 ms
6,884 KB
2.in AC 143 ms
6,884 KB
3.in AC 137 ms
6,888 KB
4.in AC 19 ms
6,888 KB
5.in AC 4 ms
6,876 KB
6.in AC 2 ms
6,872 KB
7.in AC 8 ms
6,872 KB
8.in AC 104 ms
6,872 KB
9.in AC 13 ms
6,872 KB
challenge01.txt AC 3 ms
6,872 KB
challenge02.txt AC 3 ms
8,916 KB
challenge03.txt AC 3 ms
6,872 KB
challenge04.txt AC 3 ms
6,872 KB
challenge05.txt WA -
challenge06.txt AC 3 ms
6,876 KB
challenge07.txt AC 4 ms
6,872 KB
challenge08.txt AC 5 ms
6,876 KB
challenge09.txt AC 3 ms
6,872 KB
challenge10.txt AC 3 ms
6,872 KB
sample1.in AC 3 ms
6,872 KB
sample2.in AC 2 ms
6,872 KB
sample3.in AC 3 ms
6,876 KB
system_test1.txt AC 2 ms
6,876 KB
テストケース一括ダウンロード

ソースコード

diff #
#include <bits/stdc++.h>
#define rep(i, n) for (int i = 0; i < (n); i++)
#define rep2(i, a, b) for (int i = (a); i < (b); i++)
#define rrep(i, n) for (int i = (n) - 1; i >= 0; i--)
#define rrep2(i, a, b) for (int i = (a) - 1; i >= (b); i--)
#define all(v) (v).begin(), (v).end()
using namespace std;
typedef long long ll;
const ll inf = 1e9;
const ll mod = 1e9 + 7;

string get(int dx, int dy) {
    string s;

    if (dy > 0) s += "^";
    if (dy < 0) s += "v";
    if (dx > 0) s += ">";
    if (dx < 0) s += "<";

    return s;
}

int main() {
    int T, A, B;
    cin >> T >> B >> A;

    int x = 0, y = 0;

    vector<string> ans;

    if (T == 1 && A == 0 && y == 0) {
        cout << "NO" << endl;
        return 0;
    }

    rep (i, T) {
        if (i == 0 && x == A && y == B) {
            ans.push_back(get(-1, -1));
            x = -1; y = -1;
        } else if (i < T - 1) {
            int dy, dx;
            if (x < A && y < B) {
                dy = 1;
                dx = 1;
            } else if (x < A) {
                dy = 0;
                dx = 1;
            } else if (y < B) {
                dy = 1;
                dx = 0;
            }

            int ny = y + dy;
            int nx = x + dx;

            if (nx == A && ny == B) {
                if (y < B) {
                    if (x < A) dx = 1, dy = 0;
                    if (x == A) dx = -1, dy = 0;
                } else {
                    if (y < B) dy = 1, dx = 0;
                    if (y == B) dy = -1, dx = 0;
                }

                ny = y + dy;
                nx = x + dx;
            }

            ans.push_back(get(dx, dy));

            y = ny;
            x = nx;
        } else {
            int dx = A - x;
            int dy = B - y;

            if (abs(dx) > 1 || abs(dy) > 1) {
                cout << "NO" << endl;
            } else {
                string s;

                cout << "YES" << endl;
                ans.push_back(get(dx, dy));

                for (string e : ans) {
                    cout << e << endl;
                }
            }
        }
    }
}
0