結果
問題 | No.1707 Simple Range Reverse Problem |
ユーザー |
![]() |
提出日時 | 2021-10-15 21:51:15 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 6 ms / 2,000 ms |
コード長 | 1,071 bytes |
コンパイル時間 | 4,596 ms |
コンパイル使用メモリ | 250,808 KB |
最終ジャッジ日時 | 2025-01-25 00:46:35 |
ジャッジサーバーID (参考情報) |
judge2 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 18 |
ソースコード
#include <bits/stdc++.h> using namespace std; #if __has_include(<atcoder/all>) #include <atcoder/all> using namespace atcoder; using mint = modint1000000007; #endif using ll = long long; using ld = long double; const ll INF = 1ll<<60; const ld EPS = 1.0/1e9; #define endl "\n" #define rep(i,a,b) for(int i=a;i<b;i++) #define rrep(i,a,b) for(int i=a;i>=b;i--) #define fore(i,a) for(auto &i:a) #define all(x) (x).begin(),(x).end() #define del(x) sort(all(x)); x.erase(unique(all(x)),x.end()); int main(){ ios_base::sync_with_stdio(0); cin.tie(0); ll t; cin >> t; while(t--){ ll n; cin >> n; vector<ll>a(2*n); vector<ll>x(2*n); rep(i,0,2*n) cin >> a[i]; rep(i,0,n) x[i]=x[i+n]=(i+1); bool ans=false; ll ct=0; rep(j,0,2*n) if(a[j]!=x[j]) ct++; if(ct==0) ans=true; rep(i,0,n){ ll cnt=0; reverse(x.begin()+i,x.begin()+n+i+1); rep(j,0,2*n) if(a[j]!=x[j]) cnt++; reverse(x.begin()+i,x.begin()+n+i+1); if(cnt==0) ans=true; } if(ans) cout << "Yes" << endl; else cout << "No" << endl; } }