Submission #890696

#TimeUsernameProblemLanguageResultExecution timeMemory
890696Marco_EscandonAdvertisement 2 (JOI23_ho_t2)C++11
100 / 100
1004 ms72788 KiB
#include<bits/stdc++.h> using namespace std; #define optimizar_io ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);cout.setf(ios::fixed);cout.precision(15); #pragma GCC optimize("Ofast") typedef long long ll; struct Segment_Tree{ typedef long long ll; vector<ll> ST; Segment_Tree(ll n){ ST.assign(2*(n+1),-1e17); } void update(ll a, ll b){ a+=ST.size()/2; ST[a]=b; for(a/=2; a>0; a=a/2) ST[a]=max(ST[a*2],ST[a*2+1]); } ll RMQ(ll a, ll b) { a += ST.size()/2; b += ST.size()/2; ll s = -1e17; while (a <= b) { if (a%2 == 1) s = max(s,ST[a++]); if (b%2 == 0) s = max(s,ST[b--]); a /= 2; b /= 2; } return s; } }; int main() { ll n; cin>>n; vector<pair<ll,ll>> v(n),v2(n); Segment_Tree l(n+2),r(n+2); for(int i=0; i<n; i++){ cin>>v[i].second>>v[i].first; v2[i].first=v[i].second; v2[i].second=v[i].first; } sort(v.begin(),v.end());reverse(v.begin(),v.end());sort(v2.begin(),v2.end()); map<pair<ll,ll>, ll> mapa; for(int i=0; i<n; i++) { swap(v2[i].first,v2[i].second); mapa[v2[i]]=i+1; } ll cont=0; for(int i=0; i<n; i++) { if(l.RMQ(1,mapa[v[i]])>=v[i].second+v[i].first||r.RMQ(mapa[v[i]],n)>=v[i].first-v[i].second); else cont++; l.update(mapa[v[i]],v[i].second+v[i].first); r.update(mapa[v[i]],v[i].first-v[i].second); } cout<<cont; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...