Submission #69838269


Source Code Expand

#include <bits/stdc++.h>
#include <bits/extc++.h>
using namespace std;
using namespace __gnu_pbds;
using namespace __gnu_cxx;
const int maxn = 1e6+5;
class SegmentTree
{
public:
    long long a[4 * maxn], add[4 * maxn];
    inline void push_up(int rt) //向上更新
    {
        a[rt] = (a[rt * 2] + a[rt * 2 + 1]);
    }
    void build(int l, int r, int rt) //从l到r建立线段树
    {
        add[rt]=-1;
        if (l == r)
        {
            a[rt]=1;
            return;
        }
        int mid = (l + r) / 2;
        build(l, mid, rt * 2);
        build(mid + 1, r, rt * 2 + 1);
        push_up(rt);
    }
    inline void push_down(int rt, int l,int r) //向下更新
    {
        if (add[rt] != -1)
        {
            add[rt * 2] = add[rt];
            add[rt * 2 + 1] = add[rt];
            int mid=l+r>>1;
            a[rt * 2] = add[rt] ;
            a[rt * 2 + 1] = add[rt] ;
            add[rt] = -1;
        }

    }
    void updata1(int x, int y, int l, int r, int rt) //线段树区间为从l到r,把区间x到y每个数+k
    {
        if (x <= l && y >= r)
        {
            a[rt] =0;
            add[rt]=0;
            return;
        }
        push_down(rt, l,r);
        int mid = (l + r) / 2;
        if (x <= mid)
            updata1(x, y, l, mid, rt * 2);
        if (y > mid)
            updata1(x, y, mid + 1, r, rt * 2 + 1);
        push_up(rt);
    }
    void updata2(int x, long long k, int l, int r, int rt) //线段树区间为从l到r,把区间x到y每个数+k
    {
        if (l==r)
        {
            a[rt] += k;
            return;
        }
        push_down(rt, l,r);
        int mid = (l + r) / 2;
        if (x <= mid)
            updata2(x, k, l, mid, rt * 2);
        else
            updata2(x, k, mid + 1, r, rt * 2 + 1);
        push_up(rt);
    }
    long long query(int x, int y, int l, int r, int rt) //线段树区间为从l到r,询问区间x到y的和
    {
        if (x <= l && y >= r)
            return a[rt];
        push_down(rt, l, r);
        int mid = (l + r) / 2;
        long long ans = 0;
        if (x <= mid)
            ans += query(x, y, l, mid, rt * 2);
        if (y > mid)
            ans += query(x, y, mid + 1, r, rt * 2 + 1);
        return ans;
    }

}st;



int main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);
    int n,q;
    cin>>n>>q;
    st.build(1,n,1);
    while (q--)
    {
        int x,y;
        cin>>x>>y;
        int now=st.query(1,x,1,n,1);
        cout<<now<<'\n';
        st.updata1(1,x,1,n,1);
        st.updata2(y,now,1,n,1);
    }
}

Submission Info

Submission Time
Task C - Upgrade Required
User Alliy666
Language C++ 23 (gcc 12.2)
Score 300
Code Size 2696 Byte
Status AC
Exec Time 194 ms
Memory 36408 KiB

Compile Error

Main.cpp: In member function ‘void SegmentTree::push_down(int, int, int)’:
Main.cpp:34:22: warning: suggest parentheses around ‘+’ inside ‘>>’ [-Wparentheses]
   34 |             int mid=l+r>>1;
      |                     ~^~
Main.cpp:34:17: warning: unused variable ‘mid’ [-Wunused-variable]
   34 |             int mid=l+r>>1;
      |                 ^~~

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 300 / 300
Status
AC × 1
AC × 26
Set Name Test Cases
Sample sample_01.txt
All hand_01.txt, hand_02.txt, hand_03.txt, sample_01.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt, test_20.txt, test_21.txt, test_22.txt
Case Name Status Exec Time Memory
hand_01.txt AC 89 ms 36216 KiB
hand_02.txt AC 89 ms 36144 KiB
hand_03.txt AC 94 ms 36280 KiB
sample_01.txt AC 1 ms 3408 KiB
test_01.txt AC 1 ms 3504 KiB
test_02.txt AC 192 ms 36184 KiB
test_03.txt AC 193 ms 36248 KiB
test_04.txt AC 194 ms 36404 KiB
test_05.txt AC 84 ms 36180 KiB
test_06.txt AC 84 ms 36268 KiB
test_07.txt AC 89 ms 36256 KiB
test_08.txt AC 91 ms 36212 KiB
test_09.txt AC 99 ms 36212 KiB
test_10.txt AC 42 ms 3540 KiB
test_11.txt AC 42 ms 3616 KiB
test_12.txt AC 42 ms 3476 KiB
test_13.txt AC 42 ms 3416 KiB
test_14.txt AC 165 ms 36344 KiB
test_15.txt AC 130 ms 36408 KiB
test_16.txt AC 191 ms 36184 KiB
test_17.txt AC 161 ms 36252 KiB
test_18.txt AC 130 ms 36264 KiB
test_19.txt AC 187 ms 36348 KiB
test_20.txt AC 99 ms 36284 KiB
test_21.txt AC 99 ms 36284 KiB
test_22.txt AC 103 ms 36288 KiB