Submission #123100

#TimeUsernameProblemLanguageResultExecution timeMemory
123100mechfrog88Lightning Rod (NOI18_lightningrod)C++14
80 / 100
2051 ms262144 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(); vector <pair<int,int>> arr(n); for (int z=0;z<n;z++){ arr[z].first = readInt(); arr[z].second = readInt(); int t = arr[z].first; arr[z].first -= arr[z].second; arr[z].second += t; } stack <pair<int,int>> s; for (int z=0;z<n;z++){ if (s.empty()){ s.push(arr[z]); } if (s.top().first <= arr[z].first && arr[z].second <= s.top().second) continue; else{ while (arr[z].first <= s.top().first && s.top().second <= arr[z].second){ s.pop(); if (s.size() == 0) break; } s.push(arr[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...