Submission #1293529

#TimeUsernameProblemLanguageResultExecution timeMemory
1293529AbdullahIshfaqGlobal Warming (CEOI18_glo)C++20
100 / 100
42 ms3544 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define ld long double #define MOD 998244353 int t[200005], p[200005], INF = 1e9; void solve() { int n, x, ans = 0; cin >> n >> x; for (int i = 0; i < n; i++) cin >> t[i]; vector<int> dp(n, INF); for (int i = 0; i < n; i++) { int j = lower_bound(dp.begin(), dp.end(), t[i]) - dp.begin(); dp[j] = t[i]; p[i] = j + 1; ans = max(ans, p[i]); } dp = vector<int>(n, INF); for (int i = n - 1; i >= 0; i--) { int pos = lower_bound(dp.begin(), dp.end(), x - t[i]) - dp.begin(); ans = max(ans, p[i] + pos); pos = lower_bound(dp.begin(), dp.end(), -t[i]) - dp.begin(); dp[pos] = -t[i]; } cout << ans; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int t = 1; // cin >> t; // cout << fixed << setprecision(12); for (int i = 1; i <= t; i++) { 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...