Submission #1281895

#TimeUsernameProblemLanguageResultExecution timeMemory
1281895muhammad-ahmadAdvertisement 2 (JOI23_ho_t2)C++20
59 / 100
2099 ms90264 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; set<int> idx1, idx2; for (auto i : a){ auto it1 = idx1.lower_bound(X[i]); auto it2 = idx2.lower_bound(-X[i]); bool F = 0; if (it1 != idx1.end()){ int val = *it1; int j = best[val]; if (abs(X[j] - X[i]) <= E[j] - E[i]) F = 1; } if (it2 != idx2.end()){ int val = *it2; int j = best[-1 * val]; if (abs(X[j] - X[i]) <= E[j] - E[i]) F = 1; } if (!F) { ans++; idx1.insert(X[i]); idx2.insert(-X[i]); } } 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...