제출 #674013

#제출 시각아이디문제언어결과실행 시간메모리
674013sudheerays123Lightning Rod (NOI18_lightningrod)C++17
66 / 100
1494 ms262144 KiB
#include<bits/stdc++.h>
using namespace std;
#define fast ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
#define ll long long int
const ll N = 100+5 , INF = 1e18 , MOD = 1e9+7;

bool inside(ll x1 , ll y1 , ll x2 , ll y2){
	return (abs(x2-x1) <= (y2-y1));
}

void solve(){

	ll n;
	cin >> n;

	vector<pair<ll,ll>> a(n+5);
	for(ll i = 1; i <= n; i++) cin >> a[i].first >> a[i].second;

	vector<ll> left(n+5) , right(n+5);

	for(ll i = 1; i <= n; i++){
		for(ll j = i; j >= 1; j--){
			if(inside(a[j].first,a[j].second,a[i].first,a[i].second)) left[i] = j;
			else break;
		}
	}

	for(ll i = 1; i <= n; i++){
		for(ll j = i; j <= n; j++){
			if(inside(a[j].first,a[j].second,a[i].first,a[i].second)) right[i] = j;
			else break;
		}
	}

	set<pair<ll,ll>> s;
	for(ll i = 1; i <= n; i++) s.insert(make_pair(a[i].second,i));

	ll ans = 0;

	while(s.size()){

		auto it = s.end();
		it--;
		pair<ll,ll> u = (*(it));

		ans++;

		for(ll i = u.second+1; i <= right[u.second]; i++){
			if(s.count(make_pair(a[i].second,i))){
				s.erase(s.find(make_pair(a[i].second,i)));
			}
		}

		for(ll i = u.second-1; i >= left[u.second]; i--){
			if(s.count(make_pair(a[i].second,i))){
				s.erase(s.find(make_pair(a[i].second,i)));
			}
		}

		s.erase(it);
	}

	cout << ans;
}

int main(){

	fast;

	ll tc = 1;
	// cin >> tc;
	while(tc--) solve();

	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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...