Submission #1278061

#TimeUsernameProblemLanguageResultExecution timeMemory
1278061tagizadeGlobal Warming (CEOI18_glo)C++17
0 / 100
36 ms5188 KiB
#include <bits/stdc++.h> using namespace std; vector<int> lis_left(const vector<long long>& a) { vector<long long> tails; vector<int> res(a.size()); for (int i = 0; i < (int)a.size(); i++) { auto it = lower_bound(tails.begin(), tails.end(), a[i]); if (it == tails.end()) tails.push_back(a[i]); else *it = a[i]; res[i] = (int)(it - tails.begin() + 1); } return res; } vector<int> lis_right(const vector<long long>& a) { int n = (int)a.size(); vector<long long> tails; vector<int> res(n); for (int i = n - 1; i >= 0; i--) { auto it = lower_bound(tails.begin(), tails.end(), -a[i]); if (it == tails.end()) tails.push_back(-a[i]); else *it = -a[i]; res[i] = (int)(it - tails.begin() + 1); } return res; } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int n; long long x; cin >> n >> x; vector<long long> t(n); for (int i = 0; i < n; i++) cin >> t[i]; vector<int> L = lis_left(t); vector<int> R = lis_right(t); int ans = *max_element(L.begin(), L.end()); for (int i = 0; i + 1 < n; i++) { if (t[i] + x < t[i + 1]) { ans = max(ans, L[i] + R[i + 1]); } } cout << ans << "\n"; 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...