Submission #1243076

#TimeUsernameProblemLanguageResultExecution timeMemory
1243076dudugynMonkey and Apple-trees (IZhO12_apple)C++20
0 / 100
398 ms327680 KiB
#include <bits/stdc++.h> using namespace std; #define ios ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL); #define import <chatgpt> //made by dudugyn :DD #define int long long #define f first #define s second #define pb push_back #define sz(x) (int)(x.size()) #define all(x) (x).begin(),(x).end() #define allr(x) (x).rbegin(),(x).rend() #define endl '\n' #define V vector #define pii pair<int,int> #define mem(x, v) memset((x), v, sizeof (x)) #define mid (l+r)/2 const int mod = (int)1e9+7; const int inf = (int)LLONG_MAX; template<class v> auto operator<<(ostream &os, const vector<v> &vec)->ostream& { os << vec[0]; for (size_t i = 1; i < vec.size(); i++) os << ' ' << vec[i]; os << '\n'; return os; } template<class v> auto operator>>(istream &is, vector<v> &vec)->istream& { for (auto &i : vec) is >> i; return is; } template<class v> auto operator<<(ostream &os, const vector<vector<v>> &vec)->ostream& { for (auto &i : vec) { os << i[0]; for (size_t j = 1; j < i.size(); j++) os << ' ' << i[j]; os << '\n'; } return os; } template<class v> auto operator>>(istream &is, vector<vector<v>> &vec)->istream& { for (auto &i : vec) for (auto &j : i) is >> j; return is; } int n = (int)1e9; struct Seg{ struct No{ int sum = 0, suml = 0; No *l_c = nullptr, *r_c = nullptr; }; No *raiz = new No; void lazy(No *atual, int l, int r){ if(atual->suml == 1){ atual->sum = atual->suml * (r - l + 1); if(l != r){ atual->l_c->suml = atual->suml; atual->r_c->suml = atual->suml; } atual->suml = 0; } } int update(No* atual, int ql, int qr, int x, int l = 0, int r = n-1){ if(!atual->l_c) atual->l_c = new No; if(!atual->r_c) atual->r_c = new No; lazy(atual, l, r); if(r < ql || l > qr)return atual->sum; if(l >= ql && r <= qr){ atual->suml = x; lazy(atual, l, r); return atual->sum; } return atual->sum = update(atual->l_c, ql, qr, x, mid+1, r) + update(atual->r_c, ql, qr, x, l, mid); } int query(No* atual, int ql, int qr, int l = 0, int r = n-1){ if(!atual->l_c) atual->l_c = new No; if(!atual->r_c) atual->r_c = new No; lazy(atual, l, r); if(l >= ql && r <= qr)return atual->sum; if(r < ql || l > qr)return 0; return query(atual->l_c, ql, qr, mid+1, r) + query(atual->r_c, ql, qr, l, mid); } }; void solve(){ int qq; cin >> qq; int c = 0; Seg seg; while(qq--){ int op, l, r; cin >> op >> l >> r; --l, --r; if(op == 1){ c = seg.query(seg.raiz, l + c, r + c); cout<<c<<endl; }else{ seg.update(seg.raiz, l + c, r + c, 1); } } } signed main() { ios; int tt=1; //cin>>tt; while(tt--){ solve(); } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...