Submission #123109

#TimeUsernameProblemLanguageResultExecution timeMemory
123109mechfrog88Lightning Rod (NOI18_lightningrod)C++14
80 / 100
2049 ms116908 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; void fastscan(int &x) { bool neg=false; register int c; x =0; c=getchar(); if(c=='-') { neg = true; c=getchar(); } for(;(c>47 && c<58);c=getchar()) x = (x<<1) + (x<<3) +c -48; if(neg) x *=-1; } int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); int n; fastscan(n); int arrx[n]; int arry[n]; for (int z=0;z<n;z++){ fastscan(arrx[z]); fastscan(arry[z]); } 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.emplace(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.emplace(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...