結果
| 問題 | 
                            No.1369 交換門松列・竹
                             | 
                    
| コンテスト | |
| ユーザー | 
                             Nachia
                         | 
                    
| 提出日時 | 2021-01-29 22:44:46 | 
| 言語 | cLay  (20241019-1)  | 
                    
| 結果 | 
                             
                                AC
                                 
                             
                            
                         | 
                    
| 実行時間 | 5 ms / 2,000 ms | 
| コード長 | 680 bytes | 
| コンパイル時間 | 2,942 ms | 
| コンパイル使用メモリ | 176,520 KB | 
| 実行使用メモリ | 5,376 KB | 
| 最終ジャッジ日時 | 2024-07-05 14:59:16 | 
| 合計ジャッジ時間 | 3,451 ms | 
| 
                            ジャッジサーバーID (参考情報)  | 
                        judge1 / judge4 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 1 | 
| other | AC * 33 | 
ソースコード
bool f(int a,int b,int c){
  if(a==b||b==c||a==c) return false;
  return ((a<b&&c<b)||(a>b&&c>b));
}
int N,A[5d4];
void loop(){
  rd(N,A(N));
  int p=-1;
  vector<int> W;
  rep(i,N-2) if(!f(A[i],A[i+1],A[i+2])) W.push_back(i);
  p=W[0];
  int a=0;
  rep(l,p,p+3){
    rep(r,N){
      int ok=1;
      swap(A[l],A[r]);
      if(ok) for(int w:W) if(!f(A[w],A[w+1],A[w+2])){ ok=0; break; }
      if(ok) rep(i,max(0,l-2),min(N-2,l+2)) if(!f(A[i],A[i+1],A[i+2])){ ok=0; break; }
      if(ok) rep(i,max(0,r-2),min(N-2,r+2)) if(!f(A[i],A[i+1],A[i+2])){ ok=0; break; }
      swap(A[l],A[r]);
      if(ok) a=1;
    }
    if(a) break;
  }
  wt(a?"Yes":"No");
}
{int @T;while(T--)loop();}
            
            
            
        
            
Nachia