제출 #1103958

#제출 시각아이디문제언어결과실행 시간메모리
1103958vjudge1Global Warming (CEOI18_glo)C++17
100 / 100
82 ms2788 KiB
#include <iostream>
#include <algorithm>
using namespace std;

int arr[200001], len[200001];
int *lis;

int main() {
	int n, x; cin >> n >> x;
	for (int i = 0; i < n; i++) cin >> arr[i];

    lis = new int[n];
    fill(lis, lis+n, __INT_MAX__);
	int mx = 0, l = 0;
	for (int i = 0; i < n; ++i) {
		int *j = lower_bound(lis, lis+mx, arr[i]);
		*j = arr[i];
		len[i] = j-lis + 1;
        mx = max(mx, len[i]);
	} l = mx;
    fill (lis, lis+n, __INT_MAX__);
	for (int i = n-1; i >= 0; --i) {
		int* pos = lower_bound(lis, lis+l, -arr[i] + x);
		mx = max(mx, len[i] + int(pos-lis));

		int* insert_pos = lower_bound(lis, lis+l, -arr[i]);
		*insert_pos = -arr[i];
	}
	cout << mx << endl;
}
#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...