Submission #490456

#TimeUsernameProblemLanguageResultExecution timeMemory
490456fun_dayGlobal Warming (CEOI18_glo)C++14
0 / 100
2092 ms3720 KiB
#include <bits/stdc++.h> using namespace std; vector<int> dp; void init(int n){ dp.resize(n , 1); return ; } int get_lis(vector<int> v){ int n = (int)v.size(); if(n == 0) return 0; vector<int> lis; for(int i = 0 ; i < n ; i++){ int val = v[i]; auto q = lower_bound(lis.begin(),lis.end() , val); if(q == lis.end()){ lis.emplace_back(val); } else{ *q = val; } dp[i] = (int)lis.size(); } return (int)lis.size(); } int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); int n , x; cin >> n >> x; init(n); vector<int> v(n); for(int i = 0 ; i < n ; i++){ cin >> v[i]; } get_lis(v); int best = 0; for(int i = 0 ; i < n ; i++){ int val = v[i]; vector<int> s; for(int j = i + 1 ; j < n ; j++){ if(v[j] + x > val) s.emplace_back(v[j] + x); } best = max(best , dp[i] + get_lis(s)); s.clear(); for(int j = i + 1 ; j < n ; j++){ if(v[j] > val - x) s.emplace_back(v[j]); } best = max(best , dp[i] + get_lis(s)); } cout << best << '\n'; 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...