제출 #673803

#제출 시각아이디문제언어결과실행 시간메모리
673803sudheerays123Lightning Rod (NOI18_lightningrod)C++17
7 / 100
1352 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;
		}
	}

	vector<ll> dp(n+5,INF);
	dp[0] = 0;

	for(ll i = 1; i <= n; i++){
		dp[i] = min(dp[i],dp[left[i]-1]+1);
		dp[right[i]] = min(dp[right[i]],dp[left[i]-1]+1);
	}

	cout << dp[n];
}

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...