제출 #639783

#제출 시각아이디문제언어결과실행 시간메모리
639783TrentGlobal Warming (CEOI18_glo)C++17
48 / 100
2095 ms157068 KiB
#include "bits/stdc++.h" #include <unordered_map> using namespace std; #define ll long long #define open(g) string _name_ = g; freopen((_name_ + ".in").c_str(), "r", stdin); freopen((_name_ + ".out").c_str(), "w", stdout) #define printArr(a, len) for(int asdf = 0; asdf < (len); ++asdf) cout << (a)[asdf] << ' '; cout << '\n'; #define boost() cin.sync_with_stdio(0); cin.tie(0) #define forR(i, x) for(int i = 0; i < x; ++i) #define REP(i, a, b) for(int i = (a); i < (b); ++i) #define all(i) i.begin(), i.end() #define pii pair<int, int> #define vi vector<int> #define si set<int> #define usi unordered_set<int> #define mii map<int, int> #define umii unordered_map<int, int> #define gp_hash_table unordered_map #define int ll const int MV = 2e9 + 10, MN = 2e5 + 10; map<int, int> bit; void upd(int i, int v){ ++i; for(; i < MV; i+=i&-i) { bit[i] = max(bit[i], v); } } int qu(int i){ ++i; int ma = 0; for(; i > 0; i-=i&-i) { ma = max(ma, bit[i]); } return ma; } int arr[MN], I[MN], D[MN]; signed main(){ int n, x; cin >> n >> x; bit.clear(); forR(i, n) cin >> arr[i]; forR(i, n) upd(arr[i], I[i] = qu(arr[i] - 1) + 1); bit.clear(); for(int i = n - 1; i >= 0; --i){ upd(MV - arr[i], D[i] = qu(MV - arr[i] - 1) + 1); } bit.clear(); int ma = 0; forR(i, n){ ma = max(ma, qu(arr[i] + x - 1) + D[i]); upd(arr[i], I[i]); } cout << ma << '\n'; }
#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...