제출 #1030579

#제출 시각아이디문제언어결과실행 시간메모리
1030579Gray원숭이와 사과 나무 (IZhO12_apple)C++17
100 / 100
26 ms3184 KiB
#include <algorithm> #include <cmath> #include <cstdio> #include <functional> #include <ios> #include <iostream> #include <map> #include <ratio> #include <set> #include <string> #include <vector> #define ll long long #define ull unsigned long long int #define ld double #define ln "\n" #define ff first #define ss second using namespace std; const ll inf=2e18; void setio(string io=""){ #ifndef LOCAL if (io.length()){ freopen((io+".in").c_str(), "r", stdin); freopen((io+".out").c_str(), "w", stdout); return; } #endif ios_base::sync_with_stdio(0); cin.tie(nullptr); } struct Node{ Node *left, *right; ll val, full; Node(){ left=right=nullptr; val=full=0; } Node(ll _val, ll _full){ left=right=nullptr; val=_val; full=_full; } void preprocess(ll tl, ll tr){ ll tm = (tl+tr)/2; if (left and left->val!=(tm-tl+1)){ left->val=(tm-tl+1); } } void update(ll tl, ll tr, ll l, ll r){ if (full or l>r) return; else if (tl==l and tr==r){ val=tr-tl+1; full=1; }else{ ll tm = (tl+tr)/2; if (!left) left=new Node; left->update(tl, tm, l, min(r, tm)); if (!right) right=new Node; right->update(tm+1, tr, max(tm+1, l), r); val=left->val+right->val; } } ll query(ll l, ll r, ll tl, ll tr){ if (l>r) return 0; else if (l==tl and r==tr){ return val; }else if (full) return r-l+1; else{ ll tm = (tl+tr)/2; ll ans=0; // preprocess(tl, tr); if (left) ans+=left->query(l, min(r, tm), tl, tm); if (right) ans+=right->query(max(l, tm+1), r, tm+1, tr); return ans; } } }; void solve(){ Node tr; ll l=1, r=1e9; ll q; cin >> q; ll c=0; while (q--){ ll t, x, y; cin >> t >> x >> y; if (t==1){ c = tr.query(x+c, y+c, l, r); cout << c << ln; }else{ tr.update(l, r, x+c, y+c); } } } int main(){ setio(); ll t=1; // cin >> t; while (t--) solve(); }

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

apple.cpp: In function 'void setio(std::string)':
apple.cpp:25:10: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   25 |   freopen((io+".in").c_str(), "r", stdin);
      |   ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
apple.cpp:26:10: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   26 |   freopen((io+".out").c_str(), "w", stdout);
      |   ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...