Submission #1312317

#TimeUsernameProblemLanguageResultExecution timeMemory
1312317hyyhGlobal Warming (CEOI18_glo)C++20
100 / 100
105 ms4608 KiB
#include <iostream> #include <math.h> #include <vector> #include <string> #include <algorithm> #include <queue> #include <stack> #include <map> #include <cstring> #include <iomanip> #include <set> #include <bitset> using namespace std; using ll = long long; using pii = pair<int,int>; using piii = tuple<int,int,int>; using pibii = tuple<int,bool,int,int>; #define endl '\n' #define f first #define s second int const INF = 1e9+10; int main(){ int n,m;cin >> n >> m; vector<int> lis = {0}; vector<int> prefix; vector<int> lds = {-INF}; vector<int> suffix; vector<int> arr; for(int i = 0;i < n;i++){ int g;cin >> g; arr.emplace_back(g); auto it = lower_bound(lis.begin(),lis.end(),g); // for(auto k:lis) cout << k << " "; // cout << endl; if(it != lis.end()){ *it = g; prefix.emplace_back(it-lis.begin()); } else{ prefix.emplace_back(lis.size()); lis.emplace_back(g); } } for(int i = n-1;i >= 0;i--){ int g = -arr[i]; auto nit = lower_bound(lds.begin(),lds.end(),g+m); suffix.emplace_back(nit-lds.begin()); auto it = lower_bound(lds.begin(),lds.end(),g); // for(auto k:lds) cout << k << " "; // cout << endl; if(it != lds.end()){ *it = g; } else{ lds.emplace_back(g); } } reverse(suffix.begin(),suffix.end()); // for(auto k:prefix) cout << k << " "; // cout << endl; // for(auto k:suffix) cout << k << " "; // cout << endl; int ans = lis.size()-1; for(int i = 0;i < n;i++){ //cout << arr[i] << ans << endl; ans = max(ans,prefix[i]+suffix[i]-1); } cout << ans; }
#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...