Submission #123108

#TimeUsernameProblemLanguageResultExecution timeMemory
123108mechfrog88Lightning Rod (NOI18_lightningrod)C++14
80 / 100
2067 ms124412 KiB
#include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> #pragma GCC optimize("unroll-loops,no-stack-protector") #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native") using namespace __gnu_pbds; using namespace std; template <typename T> using ordered_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>; typedef long long ll; typedef long double ld; inline int readInt() { int x = 0; char ch = getchar(); while (ch < '0' || ch > '9') ch = getchar(); while (ch >= '0' && ch <= '9'){ x = (x << 3) + (x << 1) + ch - '0'; ch = getchar(); } return x; } int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); int n; n = readInt(); int arrx[n]; int arry[n]; for (int z=0;z<n;z++){ arrx[z] = readInt(); arry[z] = readInt(); } stack <int> s; for (int z=0;z<n;z++){ int a = arrx[z]-arry[z]; int b = arrx[z]+arry[z]; if (s.empty()){ s.push(z); } int c = arrx[s.top()]-arry[s.top()]; int d = arrx[s.top()]+arry[s.top()]; if (c <= a && b <= d) continue; else{ while (a <= c && d <= b){ s.pop(); if (s.size() == 0) break; c = arrx[s.top()]-arry[s.top()]; d = arrx[s.top()]+arry[s.top()]; } s.push(z); } } printf("%d",int(s.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...