제출 #927473

#제출 시각아이디문제언어결과실행 시간메모리
927473OAleksaGlobal Warming (CEOI18_glo)C++14
27 / 100
57 ms7508 KiB
#include <bits/stdc++.h> using namespace std; #define f first #define s second #define int long long const int N = 2e5 + 69; const int inf = 1e9 + 69; int n, a[N], x, dp[N]; signed main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int tt = 1; //cin >> tt; while (tt--) { cin >> n >> x; for (int i = 1;i <= n;i++) cin >> a[i]; int ans = 0; vector<int> dp(n, inf), bst(n, inf); for (int i = 1;i <= n;i++) { auto u = lower_bound(dp.begin(), dp.end(), a[i]) - dp.begin(); ans += (dp[u] == inf); dp[u] = a[i]; bst[i] = u + 1; } fill(dp.begin(), dp.end(), inf); for (int i = n;i >= 1;i--) { auto u = lower_bound(dp.begin(), dp.end(), -(a[i] - x + 1)) - dp.begin(); ans = max(ans, bst[i] + u); u = lower_bound(dp.begin(), dp.end(), -a[i]) - dp.begin(); dp[u] = -a[i]; } cout << ans; } return 0; }
#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...