/ SeriousOJ /

Record Detail

Accepted


  
# Status Time Cost Memory Cost
#1 Accepted 4ms 532.0 KiB

Code

#include <iostream>
#include <vector>
#include <utility>
#include <set>
#include <algorithm>
#include <cmath>
#include <bitset>
#include <string>

// ——— TYPE ALIASES ———
using namespace std;
using ll   = long long;
using ull  = unsigned long long;
using ld   = long double;
using pii  = pair<int, int>;
using pll  = pair<ll, ll>;
using vi   = vector<int>;
using vb   = vector<bool>;
using vll  = vector<ll>;
using vpii = vector<pii>;
using vpll = vector<pll>;
using si   = set<int>;
using spii = set<pii>;

// ——— CONSTANTS ———
constexpr int INF_INT = 0x3f3f3f3f;
constexpr ll INF_LL = 4e18;
constexpr ll MOD = 1e9 + 7;
constexpr ll MOD2 = 998244353;
constexpr ld EPS = 1e-9;
constexpr ld PI = acos(-1.0L);

// ——— MACROS ———
#define all(x) (x).begin(), (x).end()
#define rall(x) (x).rbegin(), (x).rend()
#define sz(x) int((x).size())
#define pb push_back
#define eb emplace_back
#define rep(i,n) for(int i=0;i<(n);++i)
#define rrep(i,n) for(int i=(n)-1;i>=0;--i)
#define each(x,v) for(auto &x : v) //range traversal
#define popcnt(x) __builtin_popcount(x)
#define popcntll(x) __builtin_popcountll(x)
#define bit(x) bitset<32>(x) //bitset

// ——— MATH ———
ll modexp(ll base, ll exp, ll m) {
    ll res = 1 % m;
    base %= m;
    while (exp > 0) {
        if (exp & 1) res = (res * base) % m;
        base = (base * base) % m;
        exp >>= 1;
    }
    return res;
}

ll gcd_ll(ll a, ll b) {
    return b == 0 ? a : gcd_ll(b, a % b);
}

ll lcm_ll(ll a, ll b) {
    return (a / gcd_ll(a, b)) * b;
}

bool solve(const vll &A, const vll &B) {
    int n = A.size();
    for (int i = 1; i + 1 < n; ++i) {
        bool a_peak = (A[i] > B[i-1] && A[i] > B[i+1]);
        bool b_peak = (B[i] > A[i-1] && B[i] > A[i+1]);
        if (!(a_peak || b_peak)) return false;
    }
    return true;
}


void done() {
	ll n; cin>>n;
	vll a(n),b(n);
	
	for(ll &x : a) cin >> x;
    for(ll &x : b) cin >> x;
	if(n<2){
		cout<< "Yes\n";
		return;}
	
	vll a_asc = a, b_asc = b;
    sort(a_asc.begin(), a_asc.end());
    sort(b_asc.begin(), b_asc.end());

    vll a_desc = a_asc, b_desc = b_asc;
    reverse(a_desc.begin(), a_desc.end());
    reverse(b_desc.begin(), b_desc.end());

    bool ok = false;
    vector<vll*> a_opts = { &a_asc, &a_desc };
    vector<vll*> b_opts = { &b_asc, &b_desc };
    for (vll *Ap : a_opts) {
        for (vll *Bp : b_opts) {
            if (solve(*Ap, *Bp)) {
                ok = true;
                break;
            }
        }
        if (ok) break;
    }

    cout << (ok ? "Yes\n" : "No\n");
}


int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);

    int T; cin >> T;
    while (T--) done();
    return 0;
}

Information

Submit By
Type
Pretest
Problem
P1193 C. Roy and Peak Array
Language
C++17 (G++ 13.2.0)
Submit At
2025-06-13 17:09:28
Judged At
2025-06-13 17:09:28
Judged By
Score
10
Total Time
4ms
Peak Memory
532.0 KiB