/ SeriousOJ /

Record Detail

Wrong Answer


  
# Status Time Cost Memory Cost
#1 Accepted 2ms 532.0 KiB
#2 Accepted 8ms 5.672 MiB
#3 Accepted 2ms 788.0 KiB
#4 Accepted 4ms 1.52 MiB
#5 Accepted 15ms 3.27 MiB
#6 Accepted 15ms 3.367 MiB
#7 Wrong Answer 4ms 532.0 KiB
#8 Wrong Answer 5ms 532.0 KiB

Code

#include <bits/stdc++.h>
using namespace std;
typedef long long int ll;
const ll Log = 22, N = 1e5 + 7;
ll Min[N][Log], Max[N][Log];

void sparse(vector<ll> &arr, ll n) {
    for (int i = 1; i <= n; i++) Min[i][0] = Max[i][0] = arr[i];
    
    ll sz = 32 - __builtin_clz(n);
    for (int j = 1; j < sz; j++) {
        for (int i = 1; i + (1 << j) - 1 <= n; i++) {
            Min[i][j] = min (Min[i][j - 1], Min[i + (1<<(j - 1))][j - 1]);
            Max[i][j] = max (Max[i][j - 1], Max[i + (1<<(j - 1))][j - 1]);
        }
    }
}

pair<ll,ll> query(ll L, ll R) {
    ll j = 31 - __builtin_clz(R - L + 1);
    ll mn = min(Min[L][j], Min[R - (1<<j) + 1][j]);
    ll mx = max(Max[L][j], Max[R - (1<<j) + 1][j]);
    return {mn, mx};
}

bool valid(ll i, ll j, ll mn, ll mx) {
    pair<ll,ll> tmp = query(i, j);

    if (tmp.first >= mx || tmp.second <= mn) return true;
    return false;
}

bool check(vector<ll> &arr, ll i, ll j, ll mn, ll mx) {
    bool ok = true;

    while (i < j) {

        if (valid(i + 1, j, min(mn, arr[i]), max(mx, arr[i]))) {
            mn = min (mn, arr[i]);
            mx = max (mx, arr[i]);
            i++;
        }
        else if(valid(i, j - 1, min(mn, arr[j]), max(mx, arr[j]))) {
            mn = min (mn, arr[j]);
            mx = max (mx, arr[j]);
            j--;
        }
        else {
            ok = false;
            break;
        }
    }

    return ok;
}

signed main() {
    ios_base::sync_with_stdio(0); cin.tie(0);
    
    ll t = 1;
    cin >> t; 

    while (t--) {
        ll n; cin >> n;
        vector<ll> arr(n + 1);

        for (int i = 1; i <= n; i++) cin >> arr[i];

        sparse(arr, n);

        if (check(arr, 2, n, arr[1], arr[1]) || check(arr, 1, n - 1, arr[n], arr[n])) {
            cout << "YES\n";
        }
        else cout << "NO\n";

    }
}

Information

Submit By
Type
Submission
Problem
P1229 Array of Beauty
Language
C++17 (G++ 13.2.0)
Submit At
2025-09-03 20:22:55
Judged At
2025-09-03 20:22:55
Judged By
Score
60
Total Time
15ms
Peak Memory
5.672 MiB