結果

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

テストケース

テストケース表示
入力 結果 実行時間
使用メモリ
0.in AC 145 ms
6,876 KB
1.in AC 160 ms
6,880 KB
2.in AC 149 ms
6,880 KB
3.in AC 144 ms
6,876 KB
4.in AC 18 ms
6,880 KB
5.in AC 3 ms
6,868 KB
6.in AC 3 ms
6,872 KB
7.in AC 8 ms
8,916 KB
8.in AC 113 ms
6,872 KB
9.in AC 12 ms
6,868 KB
challenge01.txt AC 4 ms
6,872 KB
challenge02.txt AC 2 ms
6,868 KB
challenge03.txt AC 2 ms
6,872 KB
challenge04.txt AC 2 ms
6,872 KB
challenge05.txt WA -
challenge06.txt AC 3 ms
6,872 KB
challenge07.txt AC 2 ms
6,872 KB
challenge08.txt AC 4 ms
8,916 KB
challenge09.txt AC 4 ms
6,872 KB
challenge10.txt AC 3 ms
6,872 KB
sample1.in AC 3 ms
8,916 KB
sample2.in AC 2 ms
6,872 KB
sample3.in AC 3 ms
8,920 KB
system_test1.txt AC 3 ms
6,872 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