Submission #1293636

#TimeUsernameProblemLanguageResultExecution timeMemory
1293636Hamed_Ghaffaritrapezoid (balkan11_trapezoid)C++20
100 / 100
140 ms23480 KiB
#include <bits/stdc++.h> using namespace std; using pii = pair<int, int>; #define X first #define Y second #define mid ((l+r)>>1) #define lc id<<1 #define rc lc|1 #define all(x) x.begin(), x.end() #define SZ(x) int(x.size()) const int MXN = 2e5+5; const int MOD = 30013; inline pii merge(pii x, pii y) { return x.X==y.X ? pii(x.X, (x.Y+y.Y)%MOD) : max(x, y); } int N; pii seg[MXN<<2]; void build(int l=0, int r=N, int id=1) { if(r-l == 1) { seg[id] = {0, l==0}; return; } build(l, mid, lc); build(mid, r, rc); seg[id] = merge(seg[lc], seg[rc]); } void upd(int p, pii x, int l=0, int r=N, int id=1) { if(r-l == 1) { seg[id] = x; return; } p<mid ? upd(p, x, l, mid, lc) : upd(p, x, mid, r, rc); seg[id] = merge(seg[lc], seg[rc]); } pii get(int s, int e, int l=0, int r=N, int id=1) { if(s<=l && r<=e) return seg[id]; if(e<=mid) return get(s, e, l, mid, lc); if(s>=mid) return get(s, e, mid, r, rc); return merge(get(s, e, l, mid, lc), get(s, e, mid, r, rc)); } int n, a[MXN], b[MXN], c[MXN], d[MXN]; pii val[MXN]; vector<int> cx, cy, gt_vec[MXN], up_vec[MXN]; inline int GI(vector<int> &cmp, int x) { return lower_bound(all(cmp), x)-cmp.begin(); } int32_t main() { cin.tie(0); cout.tie(0); ios_base::sync_with_stdio(0); cin >> n; cx.push_back(0); cy.push_back(0); for(int i=0; i<n; i++) { cin >> a[i] >> b[i] >> c[i] >> d[i]; cx.push_back(a[i]); cx.push_back(b[i]); cy.push_back(c[i]); cy.push_back(d[i]); } sort(all(cx)); cx.resize(unique(all(cx))-cx.begin()); sort(all(cy)); cy.resize(unique(all(cy))-cy.begin()); N = SZ(cy); build(); for(int i=0; i<n; i++) { gt_vec[GI(cx, a[i])-1].push_back(i); up_vec[GI(cx, b[i])].push_back(i); } for(int i=0; i<SZ(cx); i++) { for(int j : up_vec[i]) upd(GI(cy, d[j]), val[j]); for(int j : gt_vec[i]) { pii x = get(0, GI(cy, c[j])); val[j] = pii(x.X+1, x.Y); } } cout << seg[1].X << ' ' << seg[1].Y << '\n'; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...