Submission #1274966

#TimeUsernameProblemLanguageResultExecution timeMemory
1274966rana_azkaGlobal Warming (CEOI18_glo)C++20
28 / 100
2095 ms5096 KiB
#include <bits/stdc++.h> using namespace std; #define int long long const int INF = 1e18; const int MOD = 1e9+7; const int MAXN = 2e5; int n, m; int arr[MAXN+5]; int dp_pref[MAXN+5]; int dp_suff[MAXN+5]; void solve(){ cin >> n >> m; for(int i = 1; i <= n; i++) cin >> arr[i]; vector<int> v; v.push_back(-INF); int sz = 0; for(int i = 1; i <= n; i++){ int idx = 0; int left = 0, right = sz; int mid; while(left <= right){ mid = (left + right) / 2; if(v[mid] < arr[i]){ idx = mid + 1; left = mid + 1; }else{ right = mid - 1; } } dp_pref[i] = idx; if(idx <= sz){ v[idx] = min(arr[i], v[idx]); }else{ v.push_back(arr[i]); sz++; } } v.clear(); v.push_back(INF); sz = 0; for(int i = n; i >= 1; i--){ int idx = 0; int left = 0, right = sz; int mid; while(left <= right){ mid = (left + right) / 2; if(v[mid] > arr[i]){ idx = mid + 1; left = mid + 1; }else{ right = mid - 1; } } dp_suff[i] = idx; if(idx <= sz){ v[idx] = max(arr[i], v[idx]); }else{ v.push_back(arr[i]); sz++; } } int ans = 0; for(int i = 1; i <= n; i++){ for(int j = i + 1; j <= n; j++){ if(arr[i] - arr[j] < m) ans = max(dp_pref[i] + dp_suff[j], ans); } } cout << ans << endl; // for(int i = 1; i <= n; i++) cerr << dp_pref[i] << ' '; // cerr << endl; // for(int i = 1; i <= n; i++) cerr << dp_suff[i] << ' '; // cerr << endl; } int32_t main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int tc = 1; // cin >> tc; while(tc--){ solve(); } return 0; } /* TEST CASE 8 10 7 3 5 12 2 7 3 4 => 5 */
#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...