Submission #743789

#TimeUsernameProblemLanguageResultExecution timeMemory
743789vjudge1Lightning Rod (NOI18_lightningrod)C++17
100 / 100
491 ms205836 KiB
#include <bits/stdc++.h>
using namespace std;
#define ll long long

bool check(ll x1, ll x2, ll y1, ll y2)
{
    return abs(x1 - x2) <= y1 - y2;
}

inline void read(long long &x)
{
    x = 0;
    char ch = getchar_unlocked();
    while (ch & 16)
    {
        x = (x << 3) + (x << 1) + (ch & 15);
        ch = getchar_unlocked();
    }
}

int main()
{
    ll n;
    ll a, b;
    stack<pair<ll, ll>> st;
    read(n);
    for (int i = 0; i < n; ++i)
    {
        read(a);
        read(b);
        if (!st.empty() && check(st.top().first, a, st.top().second, b)) // old cover new
        {
            continue;
        }
        while (!st.empty() && check(a, st.top().first, b, st.top().second)) // new cover old
        {
            st.pop();
        }
        st.push({a,b});
    }
    cout << st.size();
}
#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...