Submission #198152

#TimeUsernameProblemLanguageResultExecution timeMemory
198152popovicirobertLightning Rod (NOI18_lightningrod)C++14
100 / 100
980 ms260176 KiB
#include <bits/stdc++.h> #define lsb(x) (x & (-x)) #define ll long long #define ull unsigned long long #define uint unsigned int using namespace std; const int MAXN = (int) 1e7 + 5; int x[MAXN + 1], y[MAXN + 1]; int stk[MAXN + 1], sp[MAXN + 1]; inline int getnr() { char ch = getchar_unlocked(); int ans = 0; while(!isdigit(ch)) { ch = getchar_unlocked(); } while(isdigit(ch)) { ans = ans * 10 + ch - '0'; ch = getchar_unlocked(); } return ans; } int main() { #ifdef HOME ifstream cin("A.in"); ofstream cout("A.out"); #endif int i, n; //ios::sync_with_stdio(false); //cin.tie(0), cout.tie(0); n = getnr(); for(i = 1; i <= n; i++) { x[i] = getnr(); y[i] = getnr(); } stk[0] = -1; int sz = 0; for(i = 1; i <= n; i++) { while(sz > 0 && x[i] - x[stk[sz]] <= y[i] - y[stk[sz]]) { sz--; } sp[stk[sz] + 1]++; stk[++sz] = i; } sz = 0, stk[0] = n + 1; for(i = n; i >= 1; i--) { while(sz > 0 && x[stk[sz]] - x[i] <= y[i] - y[stk[sz]]) { sz--; } sp[stk[sz]]--; stk[++sz] = i; } int ans = 0; for(i = 1; i <= n; i++) { sp[i] += sp[i - 1]; ans += (sp[i] == 1); } cout << ans; 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...