Submission #381822

#TimeUsernameProblemLanguageResultExecution timeMemory
381822Fireball0424Monkey and Apple-trees (IZhO12_apple)C++14
0 / 100
214 ms262148 KiB
#include <bits/stdc++.h> #define int long long using namespace std; struct Seg{ int l, r, mid, len, lz = 0, sum = 0; Seg *ch[2] = {nullptr, nullptr}; Seg(int lc, int rc) : l(lc), r(rc), mid((lc + rc) >> 1), len(rc - lc + 1){} void pull(){ sum = (ch[0] ? ch[0] -> sum : 0) + (ch[1] ? ch[1] -> sum : 0); } void push(){ if(lz == 0) return; if(!ch[0]) ch[0] = new Seg(l, mid); if(!ch[1]) ch[1] = new Seg(mid + 1, r); for(int i : {0, 1}){ ch[i] -> lz = 1; ch[i] -> sum = ch[i] -> len; } lz = 0; } void add(int lc, int rc){ if(lc <= l && r <= rc){ sum = len; lz = 1; return; } push(); if(rc <= mid){ if(!ch[0]) ch[0] = new Seg(l, mid); ch[0] -> add(lc, rc); } else if(lc > mid){ if(!ch[1]) ch[1] = new Seg(mid + 1, r); ch[1] -> add(lc, rc); } else{ if(!ch[0]) ch[0] = new Seg(l, mid); if(!ch[1]) ch[1] = new Seg(mid + 1, r); ch[0] -> add(lc, mid); ch[1] -> add(mid + 1, rc); } pull(); } int query(int lc, int rc){ if(lc <= l && r <= rc) return sum; push(); if(rc <= mid) return (ch[0] ? ch[0] -> query(lc, rc) : 0); else if(lc > mid) return (ch[1] ? ch[1] -> query(lc, rc) : 0); return (ch[0] ? ch[0] -> query(lc, mid) : 0) + (ch[1] ? ch[1] -> query(mid + 1, rc) : 0); } }; void solve(){ int n, last = 0; cin >> n; Seg seg(1, 1e9); while(n--){ int t, x, y; cin >> t >> x >> y; if(t == 1){ last = seg.query(x + last, y + last); cout << last << '\n'; } else seg.add(x + last, y + last); } } main(){ ios::sync_with_stdio(0); cin.tie(0); freopen("f.in", "r", stdin); freopen("f.out", "w", stdout); int t = 1; //cin >> t; while(t--) solve(); }

Compilation message (stderr)

apple.cpp:69:6: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   69 | main(){
      |      ^
apple.cpp: In function 'int main()':
apple.cpp:72:9: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result]
   72 |  freopen("f.in", "r", stdin);
      |  ~~~~~~~^~~~~~~~~~~~~~~~~~~~
apple.cpp:73:9: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result]
   73 |  freopen("f.out", "w", stdout);
      |  ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...