Submission #1297208

#TimeUsernameProblemLanguageResultExecution timeMemory
1297208chaitanyamehtaLightning Rod (NOI18_lightningrod)C++20
0 / 100
1032 ms234408 KiB
#include <bits/stdc++.h>
using namespace std;
using ll = long long;

static ll A[10000005];
static ll C[10000005];
static ll suffA[10000005];

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int N;
    cin >> N;

    for (int i = 0; i < N; i++) {
        ll X, Y;
        cin >> X >> Y;
        A[i] = X + Y;     // For right coverage
        C[i] = Y - X;     // For left coverage
    }

    // Build suffix max of A
    suffA[N-1] = A[N-1];
    for (int i = N-2; i >= 0; i--) {
        suffA[i] = max(A[i], suffA[i+1]);
    }

    ll rods = 0;
    ll prefMaxC = LLONG_MIN; // max of C[0..i-1]

    for (int i = 0; i < N; i++) {
        bool leftCover  = (i > 0 && prefMaxC >= C[i]);
        bool rightCover = (i < N-1 && suffA[i+1] >= A[i]);
        if (!leftCover && !rightCover)
            rods++;

        prefMaxC = max(prefMaxC, C[i]);
    }

    cout << rods << "\n";
    return 0;
}
#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...