/ SeriousOJ /

Record Detail

Wrong Answer


  
# Status Time Cost Memory Cost
#1 Accepted 1ms 324.0 KiB
#2 Wrong Answer 2ms 424.0 KiB
#3 Accepted 550ms 2.176 MiB
#4 Accepted 448ms 5.68 MiB
#5 Accepted 364ms 3.883 MiB
#6 Accepted 314ms 1.711 MiB
#7 Accepted 1ms 532.0 KiB
#8 Wrong Answer 1ms 532.0 KiB
#9 Wrong Answer 651ms 4.984 MiB
#10 Wrong Answer 533ms 6.996 MiB

Code

#include <bits/stdc++.h>
#include <iostream>
#include <ext/pb_ds/tree_policy.hpp>
#include <ext/pb_ds/assoc_container.hpp>
using namespace std;
using namespace __gnu_pbds;
typedef tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> ordered_set1;
typedef tree<int, null_type, greater<int>, rb_tree_tag, tree_order_statistics_node_update> ordered_set2;
typedef tree<pair<int, int>, null_type, less<pair<int, int>>, rb_tree_tag, tree_order_statistics_node_update> ordered_set_s;
typedef tree<pair<int, int>, null_type, less_equal<pair<int, int>>, rb_tree_tag, tree_order_statistics_node_update> ordered_set_s2;
typedef long long int ll;
#define fast                      \
    ios_base::sync_with_stdio(0); \
    cin.tie(0);                   \
    cout.tie(0);
const int N = 1200300;
#define pi 2 * acos(0.0)
#define vll vector<ll>
#define pq_ priority_queue
#define pq_min <int,vector<int>,greater<int>>
#define vi vector<int>
#define vii vector<pair<int, int>>
#define pii pair<int, int>
#define pb push_back
#define sp ' '
#define sz(n) (int)n.size()
#define all(n) n.begin(), n.end()
#define rall(n) n.rbegin(), n.rend()
#define YES cout << "YES\n";
#define yes cout << "yes\n";
#define NO cout << "NO\n";
#define no cout << "no\n";
#define bye return 0;
#define ss second;
#define ff first;
const double eps = 1e-9;
const int MAX = 1e5;
const int lim = 1e6;
bool odd(ll num) { return ((num & 1) == 1); }
bool even(ll num) { return ((num & 1) == 0); }
bool isEqual(double a, double b) { return abs(a - b) < eps; }
bool isGreater(double a, double b) { return a >= b + eps; }
bool isGreaterEqual(double a, double b) { return a > b - eps; }
#define tc     \
    int tt;    \
    cin >> tt; \
    while (tt--)
#define mset(n, v) memset(n, v, sizeof(n))
#define chk(n) for (auto it : n)
#define ff1(i, n) for (int i = 1; i <= n; i++)
#define lcm(a, b) (((a) * (b)) / __gcd(a, b))
int dx[8] = {1, -1, 0, 0, 1, -1, -1, 1};
int dy[8] = {0, 0, 1, -1, 1, -1, 1, -1};
ll mn(ll x, ll y)
{
    if (x < y)
        return x;
    else
        return y;
}
ll maxx(ll x, ll y)
{
    if (x > y)
        return x;
    else
        return y;
}std::vector<int> bin(int n) {
    std::vector<int> binary;
    
    while (n > 0) {
        binary.push_back(n % 2);
        n /= 2;
    }
 
    // Reverse the vector to get the binary representation in correct order
    std::reverse(binary.begin(), binary.end());
    
    return binary;
}
 
int ispal(int n)
{
 
    vi v = bin(n);
    int f = 0;
    for (int i = 0, j = v.size() - 1; i < v.size() / 2; i++, j--)
    {
        if (v[i] != v[j])
            f = 1;
    }
    if (!f)
        return 1;
    return 0;
}
 
ll POW(ll a, ll b)
{
    if (!b)
        return 1;
    ll r = POW(a, b / 2);
    if (b % 2)
        return r * r * a;
    else
        return r * r;
}
void pri(vi v)
{
    for (auto it : v)
        cout << it << ' ';
    cout << endl;
}
void pro(vll v)
{
    for (auto it : v)
        cout << it << ' ';
    cout << endl;
}
int mex(vi v, int l, int r)
{
    vi a;
    for (int i = l; i <= r; i++)
    {
        a.pb(v[i]);
    }
    sort(all(a));
    for (int i = 0, j = 1; i < a.size(); i++)
    {
        if (a[i] == j)
        {
            j++;
        }
        else
        {
            return j;
        }
    }
    return a.back() + 1;
}
vector<int> cps(const vector<int> &arr)
{
    int n = arr.size();
    vector<int> prefixSum(n);
 
    if (n > 0)
    {
        prefixSum[0] = arr[0];
        for (int i = 1; i < n; ++i)
        {
            prefixSum[i] = prefixSum[i - 1] + arr[i];
        }
    }
 
    return prefixSum;
}
 
 
 
bool comp(pair<int, int>x, pair<int, int>y)
{
    if (x.second > y.second)
        return true;
    else if (x.second == y.second)
    {
        if (x.first > y.first)
            return true;
        else
            return false;
    }
    else
        return false;
}
bool comp1(pair<int, pair<int,int>>x, pair<int, pair<int,int>>y)
{
    if (x.first > y.first)
        return true;
    else if (x.first == y.first)
    {
        if (x.second.second < y.second.second)
            return true;
        else
            return false;
    }
    else
        return false;
}
bool comp2(pair<int, pair<int,int>>x, pair<int, pair<int,int>>y)
{
    if (x.second.first > y.second.first)
        return true;
    else if (x.second.first == y.second.first)
    {
        if (x.second.second < y.second.second)
            return true;
        else
            return false;
    }
    else
        return false;
}
ll PoW(ll base, ll exponent) {
    ll result = 1;
    for (int i = 0; i < exponent; ++i) {
        result = (result * base)%10;;
    }
    return result;
}
 
bool isp(ll num) {
    ll om = num;
    ll rm = 0;
    while(num>0) {
        ll digit = num % 10;
        rm = rm * 10 + digit;
        num /= 10;
    }
    return om == rm;
}
string lcs(const std::vector<std::string>& strs) {
    std::vector<std::string::const_reverse_iterator> backs;
    std::string s;  
    if (strs.size() == 0) return "";
    if (strs.size() == 1) return strs[0]; 
    for (auto& str : strs) backs.push_back(str.crbegin()); 
    while (backs[0] != strs[0].crend()) {
        char ch = *backs[0]++;
        for (std::size_t i = 1; i<strs.size(); i++) {
            if (backs[i] == strs[i].crend()) goto done;
            if (*backs[i] != ch) goto done;
            backs[i]++;
        }
        s.push_back(ch);
    }  
done:
    reverse(s.begin(), s.end());
    return s;
}
bool leap(int year) {
    return (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
}
bool isd(string s,ll d , ll y)
{
    if(d==32) return 0;
    if(s=="April"|| s=="June"|| s=="September"|| s=="November")
    {
        if(d==31) return 0;
        return 1;
    }
    if(d>28 && s=="February")
    {
         if(d==29 && leap(y))
         {
            return 1;
         }  
         return 0; 
    }
    return 1;
}
vll pref(vll v)
{
    vll pr;
    pr.pb(v.front());
    for(int i=1;i<v.size();i++)
    {
        pr.pb(v[i]+pr[i-1]);
    }
    return pr;
}
ll cxor(vi v, ll l,ll r)
{
    ll xo=v[l];
    for(int i=l+1;i<=r;i++)
    {
        xo^=v[i];
    }
    return xo;
}
#define seea(a,x,y) for(int i=x;i<y;i++){cin>>a[i];}
#define seev(v,n) for(int i=0;i<n;i++){int x; cin>>x; v.push_back(x);}
#define sees(s,n) for(int i=0;i<n;i++){int x; cin>>x; s.insert(x);}
bool is(int num, int pos) {
    // Create a mask with only the i'th bit set
    int mask = 1 << pos;

    // Perform bitwise AND operation to isolate the i'th bit
    int result = num & mask;

    // Check if the result is non-zero (bit is set)
    return result != 0;
}

// By Nitin Patel
// Function to merge two sorted subarrays of a given array
void merge(long long start, long long end,
           vector<long long>& prefix)
{
    long long n = end - start + 1;
    long long mid = (start + end) / 2;
    vector<long long> temp(n, 0);
    long long i = start;
    long long j = mid + 1;
    long long k = 0;

    // Merge the two subarrays in sorted order
    while (i <= mid and j <= end) {
        if (prefix[i] <= prefix[j]) {
            temp[k++] = prefix[i++];
        }
        else {
            temp[k++] = prefix[j++];
        }
    }

    // Copy the remaining elements of the left subarray, if
    // any
    while (i <= mid) {
        temp[k++] = prefix[i++];
    }

    // Copy the remaining elements of the right subarray, if
    // any
    while (j <= end) {
        temp[k++] = prefix[j++];
    }

    // Copy the merged subarray back to the original array
    for (int t = start; t <= end; t++) {
        prefix[t] = temp[t - start];
    }
}


bool isvo(char x){
    if(x=='a' || x=='e'||x=='i'|| x=='o'|| x=='u') return 1;
    return 0;
}
bool is_prime(ll x){
    for(ll i=2;i*i<=x;i++){
        if(x%i==0){
            return 0;
        }
    }    
    return 1;
}

using namespace __gnu_pbds;

typedef long long ll;
template <class type1>
using ordered_multiset = tree<type1, null_type, less_equal<type1>, rb_tree_tag, tree_order_statistics_node_update>;
template <class type1>
using ordered_multiset = tree<type1, null_type, less_equal<type1>, rb_tree_tag, tree_order_statistics_node_update>;
typedef long long ll;
template <class type1>
using ordered_multiset = tree<type1, null_type, less_equal<type1>, rb_tree_tag, tree_order_statistics_node_update>;
bool com(const string &a, const string &b) {
    // If lengths differ, the longer string represents the larger number
    if (a.length() != b.length()) {
        return a.length() > b.length();
    }
    // If lengths are the same, compare lexicographically
    return a > b;
}
int main(){
   ll n;
   cin>>n;
   vi v;
   seev(v, n);
   map<int,int>m;
   set<int>s;
   for(int i=1;i<n;i++){
    if(v[i]<v[i-1]){
        s.insert(i);
    }
   }
   ll q;
   cin>>q;
   while(q--){
    ll x, l, r;
    cin>>x>>l>>r;
    if(x==2){
        l--, r--;
        auto it=s.lower_bound(l);
        auto it1=s.lower_bound(r);
        if(it==it1){
            YES;
        }
        else{
            NO;
        }
    }
    else{
        l--;
        ll i=l, xx=r;
        v[i]=xx;
        
        if((i-1>=0 && v[i]<v[i-1]) || (i+1<n && v[i]>v[i+1]))
        {
            s.insert(i);
        }
        else{
            if(s.find(i)!=s.end()){
                s.erase(i);
            }
        }

    }
    
   }
    
}
    

Information

Submit By
Type
Submission
Problem
P1085 Sorted or !Sorted
Language
C++20 (G++ 13.2.0)
Submit At
2024-08-16 17:58:27
Judged At
2024-10-03 13:20:54
Judged By
Score
60
Total Time
651ms
Peak Memory
6.996 MiB