Submission #840732

#TimeUsernameProblemLanguageResultExecution timeMemory
840732c2zi6Global Warming (CEOI18_glo)C++14
100 / 100
100 ms5800 KiB
#include <bits/stdc++.h> #define ff first #define ss second using namespace std; using ll = long long; int stx; vector<int> LIS1(vector<int> a) { int n = a.size(); vector<int> dp(n + 1, 2e9); dp[0] = -2e9; vector<int> ans; for (int x : a) { auto it = lower_bound(dp.begin(), dp.end(), x); ans.push_back(it - dp.begin()); *it = x; } return ans; } vector<int> LIS2(vector<int> a) { int n = a.size(); reverse(a.begin(), a.end()); vector<int> dp(n+1, -2e9); dp[0] = +2e9; vector<int> ans; for (int x : a) { auto it = prev(upper_bound(dp.rbegin(), dp.rend(), x)); ans.push_back(dp.rend() - prev(upper_bound(dp.rbegin(), dp.rend(), x - stx)) - 1); *it = x; } reverse(ans.begin(), ans.end()); return ans; } void solve() { int n; cin >> n >> stx; vector<int> a(n); for (int& x : a) cin >> x; vector<int> lr = LIS1(a); vector<int> rl = LIS2(a); int ans = 0; for (int i = 0; i < n; i++) ans = max(ans, lr[i] + rl[i] - 1); cout << ans << endl; } int main() { int t = 1; //cin >> t; while (t--) solve(); }
#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...