제출 #1284910

#제출 시각아이디문제언어결과실행 시간메모리
1284910limon4ick원숭이와 사과 나무 (IZhO12_apple)C++20
0 / 100
1 ms568 KiB
/*#pragma GCC optimize("Ofast,no-stack-protector,unroint-loops,fast-math,O3") #pragma GCC optimize("Ofast") #pragma GCC target("avx,avx2,fma") #pragma GCC optimization("unroint-loops") #pragma ("reroint") */ #include <bits/stdc++.h> using namespace std; #define int long long #define pb push_back #define ins insert #define F first #define S second const int mod = 1e9 + 7,N = 1e6 + 100,mx = 1e9 + 7; int up[N * 60]; struct hope{ int ans,ll,rr; }; int nv = 1; hope t[N * 60]; void push(int v,int tl,int tr){ if(up[v]==0) return; t[v].ans = tr - tl + 1; if(tl!=tr) { if(t[v].ll==0) t[v].ll = ++nv; if(t[v].rr==0) t[v].rr = ++nv; up[t[v].ll] = 1; up[t[v].rr] = 1; } up[v] = 0; } void upd(int v,int tl,int tr,int l,int r){ push(v,tl,tr); if(l>tr || r < tl) return; if(l<=tl && r>=tr){ up[v] = 1; push(v,tl,tr); return; } int mid = (tl + tr)/2; if(t[v].ll==0) t[v].ll = ++nv; if(t[v].rr==0) t[v].rr = ++nv; upd(t[v].ll,tl,mid,l,r); upd(t[v].rr,mid+1,tr,l,r); t[v].ans = t[t[v].ll].ans + t[t[v].rr].ans; } int get(int v,int tl,int tr,int l,int r){ push(v,tl,tr); if(l>tr || r<tl) return 0; if(l<=tl && r>=tr) return t[v].ans; int mid = (tl + tr)/2; if(t[v].ll==0) t[v].ll = ++nv; if(t[v].rr==0) t[v].rr = ++nv; return get(t[v].ll,tl,mid,l,r) + get(t[v].rr,mid+1,tr,l,r); } signed main(){ //freopen("justcoding.in","r",stdin); //freopen("justcoding.out","w",stdout); std::ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int n; cin >> n; int c = 0; for(int i = 1;i<=n;i++){ int d,l,r; cin >> d >> l >> r; if(d==2){ upd(1,1,mx,l+c,r+c); } else{ int x = get(1,1,mx,l+c,r+c); c+=x; cout << x << '\n'; } } }
#Verdict Execution timeMemoryGrader output
Fetching results...