This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
#define ccd ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define ll long long
#define endl '\n'
using namespace std;
/* ------------------------ hi lol ------------------------ */
// author : mzv
ll n,x,y;
stack<pair<ll,ll>> st;
bool useless;
int main() {
ccd
cin >> n;
while (n--) {
cin >> x >> y;
useless=0;
while (st.size()) {
ll x2=st.top().first;
ll y2=st.top().second;
if (x-x2<=y-y2) {
st.pop(); // bisa ditutup sama point terbaru
}
else if (x-x2<=y2-y) { // bisa tertutup sama point lama
useless=1;
break;
}
else {
break; // gabsa nutup satu sama lain
}
}
if (useless) continue;
st.push({x,y});
}
cout << st.size() << endl;
}
// bisa pake stack
// soalnya xi <= xi+1
// jd sbnarnya patokan saja sama sblh kirinya gedung terbaru
// kalau point sebuah x,y bisa ditutupi oleh x,y terbaru maka x,y lama dikeluarkan
// jika sebaliknya x,y lama bisa tutupi x,y baru gausah ditambah
// jika sama sama gabisa nutupin maka x,y baru ttp ditambah tp x,y lama tdk diremove
/*
4
1 1
3 2
4 3
5 1
expected ans -> 2
3
3 2
4 3
1 1
expected ans -> 1
5
2 10
3 5
4 9
7 6
9 15
expected ans -> 2
*/
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |