제출 #1339952

#제출 시각아이디문제언어결과실행 시간메모리
1339952alexandros원숭이와 사과 나무 (IZhO12_apple)C++20
100 / 100
358 ms258500 KiB
#include <bits/stdc++.h>

using namespace std;

typedef long long ll;

struct Node
{
    ll val = 0;
    bool lazy = false;
    Node* left = nullptr;
    Node* right = nullptr;

    void propag(ll lx, ll rx)
    {
        if(!lazy) return;
        ll mid = (lx + rx) / 2;
        if(!left) left = new Node();
        if(!right) right = new Node();
        left->val = mid - lx;
        left->lazy = true;
        right->val = rx - mid;
        right->lazy = true;
        lazy = false;
    }
};

void modif(Node* &node, ll l, ll r, ll lx, ll rx)
{
    if(!node) node = new Node();
    if(lx >= r || rx <= l) return;
    if(lx >= l && rx <= r)
    {
        node->val = rx-lx;
        node->lazy = true;
        return;
    }
    node->propag(lx, rx);
    ll mid = (lx + rx) / 2;
    modif(node->left, l, r, lx, mid);
    modif(node->right, l, r, mid, rx);
    node->val = node->left->val + node->right->val;
}

ll get(Node* &node, ll l, ll r, ll lx, ll rx)
{
    if(!node) node = new Node();
    if(lx >= r || rx <= l) return 0;
    node->propag(lx, rx);
    if(lx >= l && rx <= r) return node->val;
    ll mid = (lx + rx) / 2;
    return get(node->left, l, r, lx, mid) + get(node->right, l, r, mid, rx);
}

int main() 
{
    ll amountq, type, a, b;
    scanf("%lld", &amountq);
    Node* root = nullptr;
    ll shift = 0;
    ll l = 0, r = 1e9+1;
    while(amountq--)
    {
        scanf("%lld %lld %lld", &type, &a, &b);
        a--;
        a += shift;
        b += shift;
        if(type == 1)
        {
            shift = get(root, a, b, l, r);
            printf("%lld\n", shift);
        }
        else
        {
            modif(root, a, b, l, r);
        }
    }
}

컴파일 시 표준 에러 (stderr) 메시지

apple.cpp: In function 'int main()':
apple.cpp:58:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   58 |     scanf("%lld", &amountq);
      |     ~~~~~^~~~~~~~~~~~~~~~~~
apple.cpp:64:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   64 |         scanf("%lld %lld %lld", &type, &a, &b);
      |         ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...