Submission #1194976

#TimeUsernameProblemLanguageResultExecution timeMemory
1194976badge881Bouquet (EGOI24_bouquet)C++20
100 / 100
166 ms31212 KiB
#include <bits/stdc++.h> using namespace std; #define int long long const int maxn = 2e5 + 5; int st[4 * maxn]; void update(int id, int l, int r, int i, int val) { if (l > i || r < i || l > r) return; if (l == r) { st[id] = max(st[id], val); return; } int mid = (l + r) / 2; update(2 * id, l, mid, i, val); update(2 * id + 1, mid + 1, r, i, val); st[id] = max(st[2 * id], st[2 * id + 1]); } int get(int id, int l, int r, int x, int y) { if (l > y || r < x) return 0; if (l >= x && r <= y) return st[id]; int mid = (l + r) / 2; return max(get(2 * id, l, mid, x, y), get(2 * id + 1, mid + 1, r, x, y)); } signed main() { int n; scanf("%lld", &n); vector<int> a(n + 1), b(n + 1), sweep1[n + 2], sweep2[n + 2]; for (int i = 1; i <= n; i++) { scanf("%lld %lld", &a[i], &b[i]); sweep1[min(i + b[i], n) + 1].push_back(i); sweep2[i].push_back(max(1ll, i - a[i]) - 1); } vector<int> dp(n + 1, 1); int ans = 0; for (int i = 1; i <= n; i++) { for (int j : sweep1[i]) update(1, 1, n, j, dp[j]); for (int j : sweep2[i]) { dp[i] = max(dp[i], get(1, 1, n, 1, j) + 1); ans = max(ans, dp[i]); } } printf("%lld\n", ans); }

Compilation message (stderr)

Main.cpp: In function 'int main()':
Main.cpp:44:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   44 |     scanf("%lld", &n);
      |     ~~~~~^~~~~~~~~~~~
Main.cpp:49:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   49 |         scanf("%lld %lld", &a[i], &b[i]);
      |         ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
#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...