#include <bits/stdc++.h>
using namespace std;
inline int readInt()
{
int x = 0;
char ch = getchar_unlocked();
while (ch < '0' || ch > '9')
ch = getchar_unlocked();
while (ch >= '0' && ch <= '9')
{
x = (x << 3) + (x << 1) + ch - '0';
ch = getchar_unlocked();
}
return x;
}
int X[10'000'000 + 5], Y[10'000'000 + 5];
stack<pair<int, int>> s;
int main()
{
int N = readInt();
for (int i = 0; i < N; i++)
{
int x = X[i] = readInt(), y = Y[i] = readInt();
bool add = true;
while (s.size())
{
auto [px, py] = s.top();
// * check if last rod covers current building
if (x - px <= y - py)
{
add = 0;// * no need to add a rod
break;
}
if (x - px <= py - y) // * check if last rod is useless
s.pop();
else
break;
}
if (add)
s.push({X[i], Y[i]});
}
cout << s.size();
// write code here
return 0;
}
# | 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... |