Submission #1241437

#TimeUsernameProblemLanguageResultExecution timeMemory
1241437nasjesAdvertisement 2 (JOI23_ho_t2)C++20
100 / 100
1122 ms70896 KiB
#include <iostream> #include <iomanip> #include <vector> #include <cmath> #include <algorithm> #include <set> #include <queue> #include <map> #include <stack> #include <bitset> #include <string> #include <cstring> #include <iterator> #include <random> using namespace std; typedef long long ll; typedef pair<ll, ll> pll; typedef long double ld; const ll dim = 1e6+7; //const ll mod = 1e9 + 7; const ll inf = 1e18 + 77; #define endl "\n" #define fi first #define pb push_back #define se second #define vll vector<ll> ll n, l; ll x[dim], e[dim]; pair<ll, ll> a[dim]; int main() { set<pll> s; cin>>n; multiset<ll> rt, lt; for(int i=1; i<=n; i++) { cin>>x[i]>>e[i]; s.insert({x[i], e[i]}); } n=s.size(); ll id=1; for(auto el: s){ a[id]=el; rt.insert({el.se-el.fi}); id++; } ll ans=0; for(int i=1; i<=n; i++){ ll e=a[i].se; ll x=a[i].fi; ll fl=0; rt.erase(rt.find(e-x)); if(rt.size()>0){ auto it=rt.upper_bound(e-x); if(it==rt.end()){ it--; ll val=(*it); // cout<<e-x<<" "<<val<<endl; if(val>=e-x)fl=1; } else fl=1; } if(lt.size()>0){ auto it=lt.upper_bound(e+x); if(it==lt.end()){ it--; ll val=(*it); // cout<<e+x<<" "<<val<<endl; if(val>=e+x)fl=1; } else fl=1; } // cout<<endl; lt.insert(e+x); if(fl==0)ans++; } cout<<ans<<endl; 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...