Submission #701883

#TimeUsernameProblemLanguageResultExecution timeMemory
701883lto5Lightning Rod (NOI18_lightningrod)C++14
66 / 100
2047 ms6804 KiB
#include <bits/stdc++.h> using namespace std; void debug_out() { cerr << '\n'; } template <typename Head, typename... Tail> void debug_out(Head H, Tail... T) { cerr << " " << H; debug_out(T...); } #define debug(...) cerr << "[" << #__VA_ARGS__ << "]:", debug_out(__VA_ARGS__) namespace sub1 { void solve(int n) { vector<pair<int, int>> vt; stack<int> st; while (n--) { int x, y; cin >> x >> y; vt.emplace_back(x + y, y - x); } sort(vt.begin(), vt.end()); for (auto [x, y] : vt) { while (!st.empty() && st.top() <= y) { st.pop(); } st.push(y); } // while (!st.empty()) { // debug(st.top()); // st.pop(); // } cout << st.size(); } } // namespace sub1 namespace sub2 { const int N = 1e7 + 5; pair<int, int> st[N]; void solve(int n) { int top = 0; st[0].second = -2e9; while (n--) { int x, y; cin >> x >> y; int nx = x + y; int ny = y - x; x = nx, y = ny; debug(x, y); while (top > 0 && st[top].first <= x) { top--; } // debug(top); if (top > 0 && st[top].second >= y) { continue; } // debug('.', top); st[++top] = {x, max(y, st[top - 1].second)}; } cout << top; } } // namespace sub2 int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); #define task "a" if (fopen(task ".inp", "r")) { freopen(task ".inp", "r", stdin); freopen(task ".out", "w", stdout); } int n; cin >> n; if (n <= 1e6) { sub1::solve(n); return 0; } sub2::solve(n); return 0; }

Compilation message (stderr)

lightningrod.cpp: In function 'void sub1::solve(int)':
lightningrod.cpp:23:13: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
   23 |   for (auto [x, y] : vt) {
      |             ^
lightningrod.cpp: In function 'void sub2::solve(int)':
lightningrod.cpp:59:8: warning: operation on 'top' may be undefined [-Wsequence-point]
   59 |     st[++top] = {x, max(y, st[top - 1].second)};
      |        ^~~~~
lightningrod.cpp: In function 'int main()':
lightningrod.cpp:71:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   71 |     freopen(task ".inp", "r", stdin);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
lightningrod.cpp:72:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   72 |     freopen(task ".out", "w", stdout);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
#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...