답안 #547119

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
547119 2022-04-09T15:15:26 Z Soul234 원숭이와 사과 나무 (IZhO12_apple) C++14
100 / 100
318 ms 140656 KB
#include<bits/stdc++.h>
using namespace std;

void DBG() { cerr << "]\n"; }
template<class H, class... T> void DBG(H h, T... t) {
    cerr << h; if(sizeof...(t)) cerr << ", ";
    DBG(t...);
}
#ifdef LOCAL
#define dbg(...) cerr << "[" << #__VA_ARGS__ << "]: [", DBG(__VA_ARGS__)
#else
#define dbg(...) 0
#endif // LOCAL

#define FOR(i,a,b) for(int i = (a) ; i<(b) ; i++)
#define F0R(i,a) FOR(i,0,a)
#define ROF(i,a,b) for(int i = (b)-1 ; i>=(a) ; i--)
#define R0F(i,a) ROF(i,0,a)
#define each(e,a) for(auto &e : (a))
#define sz(v) (int)(v).size()
#define all(v) (v).begin(),(v).end()
#define rall(v) (v).rbegin(),(v).rend()
#define pb push_back
#define tcT template<class T
#define nl "\n"

using ll = long long;
using vi = vector<int>;
using pi = pair<int,int>;
using str = string;
tcT> using V = vector<T>;
tcT> using pqg = priority_queue<T,vector<T>,greater<T>>;

void setIO(string NAME = "") {
    cin.tie(0)->sync_with_stdio(0);
    if(sz(NAME)) {
        freopen((NAME + ".inp").c_str(),"r",stdin);
        freopen((NAME + ".out").c_str(),"w",stdout);
    }
}

const int SZ = 1<<30;
tcT> struct node {
    T val = 0, lzy = 0; node<T>* c[2];
    node() { c[0] = c[1] = NULL; }
    void push(int L, int R, int mid) {
        if(!lzy) return;
        if(!c[0]) c[0] = new node();
        c[0]->val = mid-L+1;
        c[0]->lzy = lzy;
        if(!c[1]) c[1] = new node();
        c[1]->val = R-mid;
        c[1]->lzy = lzy;
    }
    void upd(int l, int r, int L = 0, int R = SZ-1) {
        if(L > r || R < l) return;
        if(l <= L && R <= r) {
            val = (R-L+1);
            lzy = 1;
            return;
        }
        int M = (L+R)>>1;
        push(L,R,M);
        if(!c[0]) c[0] = new node();
        c[0]->upd(l, r, L, M);
        if(!c[1]) c[1] = new node();
        c[1]->upd(l ,r, M+1, R);
        val = 0;
        F0R(i,2) if(c[i]) val += c[i]->val;
    }
    T query(int l, int r, int L = 0, int R = SZ-1) {
        if(L > r || R < l) return 0;
        if(l <= L && R <= r) return val;
        int M = (L + R) >> 1; T ans = 0;
        push(L,R,M);
        if(c[0]) ans += c[0]->query(l, r, L, M);
        if(c[1]) ans += c[1]->query(l, r, M+1, R);
        return ans;
    }
};

void solve() {
    node<int>* st = new node<int>();
    int Q;
    cin>>Q;
    int C = 0;
    F0R(_,Q) {
        int t, l, r;
        cin>>t>>l>>r;
        if(t == 1) {
            C = st->query(l+C, r+C);
            cout << C << nl;
        }
        else st->upd(l+C, r+C);
    }
}

int main() {
    setIO();

    int t=1;
    //cin>>t;
    while(t-->0) {
        solve();
    }

    return 0;
}

Compilation message

apple.cpp: In function 'void setIO(std::string)':
apple.cpp:37:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   37 |         freopen((NAME + ".inp").c_str(),"r",stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
apple.cpp:38:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   38 |         freopen((NAME + ".out").c_str(),"w",stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 456 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 1 ms 324 KB Output is correct
4 Correct 13 ms 3524 KB Output is correct
5 Correct 13 ms 4180 KB Output is correct
6 Correct 13 ms 4084 KB Output is correct
7 Correct 13 ms 4176 KB Output is correct
8 Correct 99 ms 30580 KB Output is correct
9 Correct 197 ms 52208 KB Output is correct
10 Correct 213 ms 58504 KB Output is correct
11 Correct 209 ms 62796 KB Output is correct
12 Correct 210 ms 64772 KB Output is correct
13 Correct 210 ms 74960 KB Output is correct
14 Correct 193 ms 75568 KB Output is correct
15 Correct 305 ms 136644 KB Output is correct
16 Correct 313 ms 137636 KB Output is correct
17 Correct 203 ms 78072 KB Output is correct
18 Correct 201 ms 78188 KB Output is correct
19 Correct 316 ms 140524 KB Output is correct
20 Correct 318 ms 140656 KB Output is correct