제출 #1160123

#제출 시각아이디문제언어결과실행 시간메모리
1160123HanksburgerAdvertisement 2 (JOI23_ho_t2)C++20
59 / 100
1626 ms1114112 KiB
#include <bits/stdc++.h> #define int long long using namespace std; vector<pair<int, int> > vec; vector<int> seg, iL, iR, jL, jR; int a, b, num=1000000000; void create() { seg.push_back(0); iL.push_back(0); iR.push_back(0); jL.push_back(0); jR.push_back(0); } void upd2(int i, int l, int r) { //cout << "upd2 " << i << ' ' << l << ' ' << r << '\n'; if (l==r) { seg[i]++; return; } int mid=(l+r)/2; if (b<=mid) { if (!jL[i]) { jL[i]=seg.size(); create(); } upd2(jL[i], l, mid); } else { if (!jR[i]) { jR[i]=seg.size(); create(); } upd2(jR[i], mid+1, r); } seg[i]=seg[jL[i]]+seg[jR[i]]; } void upd1(int i, int l, int r) { //cout << "upd1 " << i << ' ' << l << ' ' << r << '\n'; upd2(i, 1, num*2); if (l==r) return; int mid=(l+r)/2; if (a<=mid) { if (!iL[i]) { iL[i]=seg.size(); create(); } upd1(iL[i], l, mid); } else { if (!iR[i]) { iR[i]=seg.size(); create(); } upd1(iR[i], mid+1, r); } } int qry2(int i, int l, int r) { //cout << "qry2 " << i << ' ' << l << ' ' << r << '\n'; if (r<=b) return seg[i]; int mid=(l+r)/2, res=jL[i]?qry2(jL[i], l, mid):0; if (mid<b) res+=jR[i]?qry2(jR[i], mid+1, r):0; return res; } int qry1(int i, int l, int r) { //cout << "qry1 " << i << ' ' << l << ' ' << r << '\n'; if (r<=a) return qry2(i, 1, num*2); int mid=(l+r)/2, res=iL[i]?qry1(iL[i], l, mid):0; if (mid<a) res+=iR[i]?qry1(iR[i], mid+1, r):0; return res; } signed main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); create(); create(); int n, cnt=0; cin >> n; for (int i=0; i<n; i++) { int x, y; cin >> x >> y; vec.push_back({y, x}); } sort(vec.begin(), vec.end(), greater<pair<int, int> >()); for (int i=0; i<n; i++) { int y=vec[i].first, x=vec[i].second; a=-x-y+num*2+1, b=x-y+num; if (!qry1(1, 1, num*2)) { upd1(1, 1, num*2); cnt++; } } cout << cnt; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...