Submission #1281890

#TimeUsernameProblemLanguageResultExecution timeMemory
1281890muhammad-ahmadAdvertisement 2 (JOI23_ho_t2)C++20
0 / 100
433 ms20200 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long

signed main(){
	int n; cin >> n;
	int X[n + 1] = {}, E[n + 1] = {};
	
	map<int, int> ma, best; 
	
	for (int i = 1; i <= n; i++){
		cin >> X[i] >> E[i];
		ma[X[i]] = max(ma[X[i]], E[i]);
	}
	
	for (int i = 1; i <= n; i++){
		if (ma[X[i]] == E[i]) best[X[i]] = i;
	}
	
	map<int, vector<int>> idx;
	
	vector<int> iter;
	
	for (int i = 1; i <= n; i++){
		if (idx[E[i]].size() == 0) iter.push_back(E[i]);
		idx[E[i]].push_back(i);
	}
	
	sort(iter.rbegin(), iter.rend());
	vector<int> a;
	for (auto i : iter){
		for (auto j : idx[i]) a.push_back(j);
	}
	
	int ans = 0;
	int vis[n + 1] = {};
	for (auto i : a){
		if (vis[i]) continue;
		ans++;
		vis[i] = 1;
		int idx = i - 1;
		while (idx > 0 && vis[idx] == 0){
			if (abs(X[i] - X[idx]) <= E[i] - E[idx]){
				vis[idx] = 2;
			}
			idx--;
		}
		idx = i + 1;
		while (idx <= n && vis[idx] == 0){
			if (abs(X[i] - X[idx]) <= E[i] - E[idx]){
				vis[idx] = 2;
			}
			idx++;
		}
	}
	
	// for (int i = 1; i <= n; i++) cout << vis[i] << ' ';
	// cout << endl;
	
	cout << ans << endl;
	
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...