제출 #1243111

#제출 시각아이디문제언어결과실행 시간메모리
1243111asdfghqwertSum Zero (RMI20_sumzero)C++20
0 / 100
0 ms320 KiB
#pragma GCC optimize("O3,Ofast")
#include <bits/stdc++.h>
//#define int long long
using namespace std; 
int n , vmax , v2;
vector<int> arr;
struct Segtree{
    int n;
    vector<int> lzy , mn , mx;
    Segtree(int _n){
        n = _n;
        mn.resize(n << 2);
        mx.resize(n << 2);
        lzy.resize(n << 2);
    }
    inline void push(int v){
        if(lzy[v] != 0){
            mn[v << 1] += lzy[v];
            mn[v << 1 | 1] += lzy[v];
            mx[v << 1] += lzy[v];
            mx[v << 1 | 1] += lzy[v];
            lzy[v << 1] += lzy[v];
            lzy[v << 1 | 1] += lzy[v];
            lzy[v] = 0;
        }
    }
    void Build(const vector<int> &arr , int v , int l , int r){
        if(l == r){
            mn[v] = arr[l];
            mx[v] = arr[l];
            return ;
        }
        int mid = (l + r) / 2;
        Build(arr , v << 1 ,l , mid);
        Build(arr , v << 1 | 1 , mid + 1 , r);
        mn[v] = min(mn[v << 1 | 1] , mn[v << 1]);
        mx[v] = max(mx[v << 1 | 1] , mx[v << 1]);
    }
    int  val , ql;
    int findRmx(int v , int l , int r){
        if(mx[v] < val || r < ql)return -1;
        if(l == r)return l;
        push(v);
        int mid = (l + r) >> 1;
        int ans = findRmx(v << 1 , l , mid);
        if(ans != -1)return ans;
        return findRmx(v << 1 | 1 , mid + 1 , r);
    }
    int findRmn(int v , int l , int r){
        if(mn[v] > val || r < ql)return -1;
        if(l == r)return l;
        push(v);
        int mid = (l + r) >> 1;
        int ans = findRmn(v << 1 , l , mid);
        if(ans != -1)return ans;
        return findRmn(v << 1 | 1 , mid + 1 , r);
    }
    int L , R , d;
    void update(int v , int l , int r){
        if(r < L || R < l)return;
        if(L <= l && r <= R){
            mn[v] += d;
            mx[v] += d;
            lzy[v] += d;
            return;
        }
        push(v);
        int mid = (l + r) >> 1;
        update(v << 1 , l , mid);
        update(v << 1 | 1 , mid + 1 , r);
        mn[v] = min(mn[v << 1] , mn[v << 1 | 1]);
        mx[v] = max(mx[v << 1] , mx[v << 1 | 1]);
    }
    int pos ;
    int point(int v  , int l , int r){
        if(l == r)return mn[v];
        int mid = (l + r) >> 1;
        if(mid <= pos)return point(v << 1 , l , mid);
        return point(v << 1| 1, mid + 1, r);
    }
};
int32_t main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
   cout << "4 2 2";
    
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...