Submission #1131635

#TimeUsernameProblemLanguageResultExecution timeMemory
1131635Champ_NamanGlobal Warming (CEOI18_glo)C++20
17 / 100
32 ms6080 KiB
#include<bits/stdc++.h> using namespace std; #define int long long #define nl '\n' int lis(vector<int>& a){ int n = a.size(); vector<int> v; for(int i=0; i<n; i++){ if(v.empty() or v.back() < a[i]){ v.push_back(a[i]); continue; } *lower_bound(v.begin(), v.end(), a[i]) = a[i]; } return v.size(); } inline void solve(){ int n, x; cin>>n>>x; vector<int> a(n); for(int i=0; i<n; i++) cin>>a[i]; int pre1[n], pre2[n]; vector<int> v; for(int i=0; i<n; i++){ if(v.empty() or v.back() < a[i]){ v.push_back(a[i]); pre1[i] = v.size(); continue; } *lower_bound(v.begin(), v.end(), a[i]) = a[i]; pre1[i] = v.size(); } v.clear(); for(int i=n-1; i>=0; i--){ if(v.empty() or v.back() > a[i]){ v.push_back(a[i]); pre2[i] = v.size(); continue; } *--upper_bound(v.rbegin(), v.rend(), a[i]) = a[i]; pre2[i] = v.size(); } int ans = pre1[n-1]; for(int i=0; i<n-1; i++){ ans = max(ans, pre1[i] + pre2[i+1]); } cout<<ans; } signed main(){ ios_base::sync_with_stdio(0); cin.tie(NULL);cout.tie(NULL); 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...