제출 #337590

#제출 시각아이디문제언어결과실행 시간메모리
337590AzimjonGlobal Warming (CEOI18_glo)C++17
100 / 100
62 ms8556 KiB
// Muallif: Azimjon Mehmonali o'g'li //========================================================= //#pragma optimization_level 3 //#pragma GCC optimize("Ofast,no-stack-protector,unroll-loops,fast-math,O3") //#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx") //#pragma GCC optimize("Ofast") //#pragma GCC target("avx,avx2,fma") //#pragma GCC optimization("unroll-loops") //========================================================= #ifdef DEBUG #define xtp xtp1 #else #define xtp(x) #endif //========================================================= #include <bits/stdc++.h> using namespace std; #define int long long typedef unsigned long long ull; typedef long double ld; typedef vector<int> vi; typedef pair<int, int> ii; typedef vector<ii> vii; #define F first #define S second #define pb push_back #define endl "\n" #define ALL(a) (a).begin(), (a).end() #define rALL(a) (a).rbegin(), (a).rend() #define SORT(a) sort(ALL(a)) #define rSORT(a) sort(rALL(a)) #define REV(a) reverse(ALL(a)) #define sqr(x) ((x) * (x)) #define TEZ \ ios::sync_with_stdio(0); \ cin.tie(0); const long double PI = 3.1415926535897; const int mod = 1000000007LL; const int INF = 1e18; const int N = 2e5 + 10; signed main() { TEZ; int n, x; cin >> n >> x; vi a(n, 0); for (int i = 0; i < n; i++) { cin >> a[i]; } vi l(n + 1, INF), d(n + 1, -INF); l[0] = -INF; int o = 0; for (int i = 0; i < n; i++) { int x = lower_bound(l.begin(), l.begin() + o + 1, a[i]) - l.begin(); d[i] = x; l[x] = a[i]; if (o < x) { o = x; } // xtp(l); } l.assign(n, INF); l[0] = -INF; o = 0; vi p(n + 1, -INF); for (int i = n - 1; i >= 0; i--) { int q = lower_bound(l.begin(), l.begin() + o + 1, -a[i] + x) - l.begin(); int w = lower_bound(l.begin(), l.begin() + o + 1, -a[i]) - l.begin(); l[w] = -a[i]; p[i] = q; if (o < q) { o = q; } // xtp(l); } int jv = -INF; for (int i = 0; i < n; i++) { jv = max(jv, p[i] + d[i] - 1); } cout << jv << endl; 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...