結果
問題 | No.360 増加門松列 |
ユーザー |
![]() |
提出日時 | 2016-04-17 23:13:06 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 4 ms / 2,000 ms |
コード長 | 970 bytes |
コンパイル時間 | 1,332 ms |
コンパイル使用メモリ | 160,364 KB |
実行使用メモリ | 5,248 KB |
最終ジャッジ日時 | 2024-12-24 04:31:20 |
合計ジャッジ時間 | 2,079 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 22 |
ソースコード
#include <bits/stdc++.h> using namespace std; #define rep(i,a,b) for(int i=a;i<b;i++) typedef vector<int> vi; bool check(vi _a) { vi a(3); rep(i, 0, 3) a[i] = _a[i]; //rep(i, 0, 3) cout << a[i] << " "; //cout << endl; if (a[0] == a[1]) return false; if (a[0] == a[2]) return false; if (a[1] == a[2]) return false; if (a[2] < a[0]) return false; int _max = max(a[0], max(a[1], a[2])); int _min = min(a[0], min(a[1], a[2])); if (_max == a[1]) return true; if (_min == a[1]) return true; return false; } vi d(7); int dfs(int depth) { if (depth == 7) { bool ok = true; rep(i, 0, 5) { if (!check({ d[i], d[i + 1],d[i + 2] })) ok = false; } if (ok) return 1; else return 0; } int ret = 0; rep(i, depth, 7) { swap(d[depth], d[i]); ret += dfs(depth + 1); swap(d[depth], d[i]); } return ret; } int main() { rep(i, 0, 7) cin >> d[i]; int ans = dfs(0); if (ans) cout << "YES" << endl; else cout << "NO" << endl; }