제출 #1135298

#제출 시각아이디문제언어결과실행 시간메모리
1135298ByeWorldAdvertisement 2 (JOI23_ho_t2)C++20
0 / 100
2089 ms6484 KiB
#include <bits/stdc++.h> #define int long long #define ll long long #define pb push_back #define fi first #define se second #define lf (id<<1) #define rg ((id<<1)|1) #define md ((l+r)>>1) #define ld long double using namespace std; typedef pair<int,int> pii; typedef pair<char,char> pcc; typedef pair<int,pii> ipii; typedef pair<pii,pii> ipiii; const int MAXN = 5e5+30; const int SQRT = 610; const int MAXA = 5e5+10; const int MOD = 1e6+7; const int INF = 2e9+10; const int LOG = 19; const ld EPS = 1e-12; void chmx(int &a, int b){ a = max(a,b); } void chmn(int &a, int b){ a = min(a,b); } int n, le[MAXN], ri[MAXN], a[MAXN]; pii x[MAXN]; // influence le ri int ANS; vector <pii> vec; signed main(){ ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); cin >> n; ANS = n; for(int i=1; i<=n; i++){ cin>>x[i].fi>>x[i].se; } sort(x+1, x+n+1); for(int i=1; i<=n; i++){ le[i] = x[i].se-x[i].fi; ri[i] = x[i].fi+x[i].se; } for(int i=1; i<=n; i++){ while(!vec.empty() && vec.back().fi <= le[i]) vec.pop_back(); vec.pb({le[i], i}); int tot = vec.size(); int mx = -INF; for(auto [x, id] : vec) chmx(mx, ri[id]); vector <int> te; for(int j=n; j>=i+1; j--){ if(ri[j] > mx){ while(!te.empty() && te.back() <= ri[j]) te.pop_back(); te.pb(ri[j]); } } // cout << i << ' ' << tot << " tot\n"; chmn(ANS, tot+te.size()); } cout << ANS << '\n'; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...