結果
| 問題 |
No.1369 交換門松列・竹
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2021-01-29 21:11:54 |
| 言語 | cLay (20241019-1) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 872 bytes |
| コンパイル時間 | 2,283 ms |
| コンパイル使用メモリ | 175,792 KB |
| 実行使用メモリ | 10,624 KB |
| 最終ジャッジ日時 | 2024-07-05 14:59:08 |
| 合計ジャッジ時間 | 6,818 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 18 WA * 11 TLE * 1 -- * 3 |
ソースコード
bool kado(int a, int b, int c) {
return ((a<b&&b>c)||(a>b&&b<c))&&(a!=c);
}
int N;
ll A[200010];
bool tryk(int i, int k) {
int kmin = max(0, k-3);
int kmax = min(N-1, k+3);
int vmin = max(0, k-6);
int vmax = min(N-3, k+4);
for (int p = kmin; p <= kmax; ++p) {
if (i == p) continue;
swap(A[i], A[p]);
bool ok = true;
for (int v = vmin; v <= vmax; ++v) {
ok &= kado(A[v], A[v+1], A[v+2]);
}
swap(A[i], A[p]);
if (ok) return true;
}
return false;
}
bool solve() {
vector<int> notks;
rd(N);
rd(A(N));
REP(i, N-2) {
if (!kado(A[i], A[i+1], A[i+2])) {
notks.push_back(i);
}
}
REP(i, N) {
for (auto k : notks) {
if (tryk(i, k)) return true;
}
}
return false;
}
{
int T;
rd(T);
REP(i, T) {
if (solve()) {
wt("Yes");
}
else {
wt("No");
}
}
}