Submission #1275382

#TimeUsernameProblemLanguageResultExecution timeMemory
1275382pqhxappleMonkey and Apple-trees (IZhO12_apple)C++20
100 / 100
258 ms137360 KiB
#include <bits/stdc++.h> using namespace std; #define FOR(i,a,b) for (int i = (a), _b = (b); i <= (_b); ++i) #define FORD(i,a,b) for (int i = (a), _b = (b); i >= (_b); --i) #define getBit(mask,i) (((mask) >> (i)) & (1LL)) #define MASK(x) (1LL << (x)) #define allof(x) begin(x), end(x) #define el cout << '\n'; //--Compare------------------------------------------------------------------------------------ template<class X, class Y> inline bool maximize(X &x, const Y &y){ return (x < y) ? x = y, 1 : 0; } template<class X, class Y> inline bool minimize(X &x, const Y &y){ return (x > y) ? x = y, 1 : 0; } //--Process------------------------------------------------------------------------------------ // #define int long long struct DynamicSegmentTree { struct Node { Node *left, *right; int lazy, sum; Node() { left = right = nullptr; sum = 0; lazy = -1; } }; Node *root = new Node(); void apply(Node *cur, int l, int r, int val) { if (val == -1) return; (cur->sum) = 1LL * (r - l + 1) * val; (cur->lazy) = val; } void down(Node *cur, int l, int r) { if (cur->left == nullptr) cur->left = new Node(); if (cur->right == nullptr) cur->right = new Node(); int mid = (l + r) >> 1; apply(cur->left, l, mid, cur->lazy); apply(cur->right, mid + 1, r, cur->lazy); cur->lazy = -1; } void update_(int u, int v, int val, int l, int r, Node *cur) { if (v < l || r < u) return; if (u <= l && r <= v) return (void) (apply(cur, l, r, val)); down(cur, l, r); int mid = (l + r) >> 1; update_(u, v, val, l, mid, cur->left); update_(u, v, val, mid + 1, r, cur->right); cur->sum = cur->left->sum + cur->right->sum; } int get_(int u, int v, int l, int r, Node *cur) { if (v < l || r < u) return 0; if (u <= l && r <= v) return cur->sum; down(cur, l, r); int mid = (l + r) >> 1; return get_(u, v, l, mid, cur->left) + get_ (u, v, mid + 1, r, cur->right); } void update(int u, int v, int val) { update_(u, v, val, 1, 1e9, root); } int get(int u, int v) { return get_(u, v, 1, 1e9, root); } }; signed main(void) { cin.tie(nullptr)->sync_with_stdio(false); // cin.exceptions(cin.failbit); #define task "f" if (fopen(task".INP", "r")) { freopen(task".INP", "r", stdin); freopen(task".OUT", "w", stdout); } //--OpenFile------------------------------------------------------------------------------- int q, C = 0; cin >> q; DynamicSegmentTree IT; IT.update(1, 1e9, 0); while (q--) { int cmd, l, r; cin >> cmd >> l >> r; if (cmd == 1) { C = IT.get(l + C, r + C); cout << C << '\n'; } if (cmd == 2) { IT.update(l + C, r + C, 1); } } cerr << (1.0 * clock() / CLOCKS_PER_SEC); return 0; }

Compilation message (stderr)

apple.cpp: In function 'int main()':
apple.cpp:94:15: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   94 |        freopen(task".INP", "r", stdin);
      |        ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
apple.cpp:95:15: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   95 |        freopen(task".OUT", "w", stdout);
      |        ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...