제출 #580561

#제출 시각아이디문제언어결과실행 시간메모리
580561talant117408Global Warming (CEOI18_glo)C++17
100 / 100
58 ms2768 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef pair <int, int> pii; typedef pair <ll, ll> pll; #define long unsigned long #define pb push_back #define mp make_pair #define all(v) (v).begin(),(v).end() #define rall(v) (v).rbegin(),(v).rend() #define lb lower_bound #define ub upper_bound #define sz(v) int((v).size()) #define do_not_disturb ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); #define endl '\n' void solve() { int n, x; const int INF = 2e9+2e6; cin >> n >> x; vector <int> v(n); for (auto &to : v) cin >> to; vector <int> dp(n, INF); vector <int> pref(n); int ans = 0; for (int i = 0; i < n; i++) { int it = lb(all(dp), v[i])-dp.begin(); ans = max(ans, it+1); dp[it] = v[i]; pref[i] = it+1; } fill(all(dp), INF); for (int i = n-1; i >= 0; i--) { int it = lb(all(dp), -v[i]+x)-dp.begin(); ans = max(ans, pref[i]+it); it = lb(all(dp), -v[i])-dp.begin(); dp[it] = -v[i]; } cout << ans; } int main() { do_not_disturb int t = 1; //~ cin >> t; while (t--) { solve(); } 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...