結果

問題 No.232 めぐるはめぐる (2)
ユーザー edamame882edamame882
提出日時 2019-07-26 01:31:07
言語 C++14
(gcc 12.3.0 + boost 1.83.0)
結果
WA  
実行時間 -
コード長 2,785 bytes
コンパイル時間 1,483 ms
コンパイル使用メモリ 167,816 KB
実行使用メモリ 4,384 KB
最終ジャッジ日時 2023-09-15 00:10:52
合計ジャッジ時間 3,679 ms
ジャッジサーバーID
(参考情報)
judge12 / judge13
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 125 ms
4,384 KB
testcase_01 AC 124 ms
4,380 KB
testcase_02 AC 124 ms
4,376 KB
testcase_03 AC 125 ms
4,376 KB
testcase_04 AC 1 ms
4,380 KB
testcase_05 AC 2 ms
4,380 KB
testcase_06 AC 1 ms
4,380 KB
testcase_07 AC 2 ms
4,380 KB
testcase_08 AC 87 ms
4,376 KB
testcase_09 AC 1 ms
4,376 KB
testcase_10 AC 2 ms
4,380 KB
testcase_11 AC 2 ms
4,376 KB
testcase_12 AC 2 ms
4,376 KB
testcase_13 WA -
testcase_14 AC 1 ms
4,380 KB
testcase_15 AC 1 ms
4,380 KB
testcase_16 AC 2 ms
4,376 KB
testcase_17 AC 1 ms
4,380 KB
testcase_18 AC 3 ms
4,376 KB
testcase_19 AC 1 ms
4,376 KB
testcase_20 AC 2 ms
4,380 KB
testcase_21 AC 2 ms
4,376 KB
testcase_22 AC 2 ms
4,376 KB
testcase_23 AC 2 ms
4,380 KB
testcase_24 AC 2 ms
4,380 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <bits/stdc++.h>
using namespace std;

//repetition
#define FOR(i,a,b) for(ll i=(a);i<(b);++i)
#define rep(i, n) for(ll i = 0; i < (ll)(n); i++)

//container util
#define all(x) (x).begin(),(x).end()

//typedef
typedef long long ll;
typedef vector<int> VI;
typedef vector<VI> VVI;
typedef vector<ll> VLL;
typedef vector<VLL> VVLL;
typedef vector<string> VS;
typedef pair<int, int> PII;
typedef pair<ll, ll> PLL;

//const value
//const ll MOD = 1e9 + 7;
//const int dx[] = {0,1,0,-1};//{0,0,1,1,1,-1,-1,-1};
//const int dy[] = {1,0,-1,0};//{1,-1,0,1,-1,0,1,-1};

//conversion
inline int toInt(string s) {int v; istringstream sin(s);sin>>v;return v;}
inline ll toLL(string s) {ll v; istringstream sin(s);sin>>v;return v;}
template<class T> inline string toString(T x) {ostringstream sout;sout<<x;return sout.str();}


int main(){
  ios::sync_with_stdio(false);
  cin.tie(0);
  ll t,a,b;
  cin >> t >> a >> b;
  if(t < max(a,b)){
    cout << "NO" << endl;
    return 0;
  }
  // cerr << "not break" << endl;
  // 最小移動回数
  int diff = t - max(a,b);
  if(diff % 2 == 0){
    // このまま時間稼ぎする
    cout << "YES" << "\n";
    int cnt = min(a,b);
    rep(i,cnt){
      cout << "^>" << endl;
      a--;
      b--;
      // cout << "hi" << endl;
    }
    // cout << "a,b " << a << "," << b << endl;
    while(a>0){cout << "^" << endl;a--;}
    while(b>0){cout << ">" << endl;b--;}

    rep(i,diff/2){
      cout << ">" << endl;
      cout << "<" << endl;
    }
    return 0;
  }else{
    // 斜め移動の回数を1回減らす -> 移動回数が一回増える
    if(a > 0 && b > 0 && diff - 1 >= 0){
      cout << "YES" << "\n";
      cout << ">" << endl;
      cout << "^" << endl;
      a--,b--;
      int cnt = min(a,b);

      rep(i,cnt){
        cout << "^>" << endl;
        a--;
        b--;
      }

      while(a>0){cout << "^" << endl; a--;}
      while(b>0){cout << ">" << endl; b--;}

      rep(i,(diff-1)/2){
        cout << ">" << endl;
        cout << "<" << endl;
      }
    }else if(a > 0 && diff - 1 >= 0){
      cout << "YES" << "\n";
      cout << "^>" << endl;
      cout << "<" << endl;
      a--;
      while(a>0){cout << "^" << endl; a--;}
      rep(i,(diff-1)/2){
        cout << ">" << endl;
        cout << "<" << endl;
      }
    }else if(b > 0 && diff - 1 >= 0){
      cout << "YES" << "\n";
      cout << "^>" << endl;
      cout << "v" << endl;
      b--;
      while(b>0){cout << ">" << endl; b--;}
      rep(i,(diff-1)/2){
        cout << ">" << endl;
        cout << "<" << endl;
      }
    }else if(t >= 3){
      cout << "^>" << endl;
      cout << "v" << endl;
      cout << "<" << endl;
      t -= 3;
        while(t > 0){cout << ">\n<\n"; t--;}
    }
    else{
      cout << "NO" << "\n";
    }
  }
  return 0;
}
0