제출 #663334

#제출 시각아이디문제언어결과실행 시간메모리
663334finn__Global Warming (CEOI18_glo)C++17
100 / 100
49 ms6488 KiB
#include <bits/stdc++.h> using namespace std; int main() { ios::sync_with_stdio(0); cin.tie(0); size_t n; int64_t x; cin >> n >> x; vector<int64_t> t(n); for (int64_t &y : t) cin >> y; reverse(t.begin(), t.end()); vector<int64_t> dp; vector<size_t> lis_after(n); for (size_t i = 0; i < n; i++) { auto it = lower_bound(dp.begin(), dp.end(), t[i], greater<int64_t>()); lis_after[n - 1 - i] = it - dp.begin() + 1; if (it == dp.end()) dp.push_back(t[i]); else *it = t[i]; } reverse(t.begin(), t.end()); dp.clear(); size_t max_lis = 0; for (size_t i = 0; i < n; i++) { auto it = lower_bound(dp.begin(), dp.end(), t[i] + x); max_lis = max(max_lis, it - dp.begin() + lis_after[i]); it = lower_bound(dp.begin(), dp.end(), t[i]); if (it == dp.end()) dp.push_back(t[i]); else *it = t[i]; } cout << max_lis << '\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...