Submission #1151984

#TimeUsernameProblemLanguageResultExecution timeMemory
1151984trufanov.pGlobal Warming (CEOI18_glo)C++20
100 / 100
40 ms2764 KiB
#include <iostream> #include <vector> #include <algorithm> #include <cstring> #include <cctype> #include <string> #include <queue> #include <unordered_set> #include <deque> using namespace std; const int INF = 2e9 + 7; int main() { ios_base::sync_with_stdio(false); cin.tie(0); int n, x; cin >> n >> x; vector<int> a(n); for (int i = 0; i < n; ++i) { cin >> a[i]; } vector<int> suff(n); vector<int> dp(n + 1, INF); dp[0] = -INF; for (int i = n - 1; i > -1; --i) { int pos = lower_bound(dp.begin(), dp.end(), -a[i]) - dp.begin(); suff[i] = pos; dp[pos] = -a[i]; } int ans = 0; dp.assign(n + 1, INF); dp[0] = -INF; dp[1] = a[0]; for (int i = 1; i < n; ++i) { int preflen = lower_bound(dp.begin(), dp.end(), a[i] + x) - dp.begin(); ans = max(ans, preflen + suff[i] - 1); dp[lower_bound(dp.begin(), dp.end(), a[i]) - dp.begin()] = a[i]; } cout << ans << '\n'; }
#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...