Submission #927280

#TimeUsernameProblemLanguageResultExecution timeMemory
927280belgianbotGlobal Warming (CEOI18_glo)C++14
100 / 100
54 ms5460 KiB
#include <bits/stdc++.h>

using namespace std;

signed main() {
	ios::sync_with_stdio(false);
	cin.tie(NULL);
	int N, X; cin >> N >> X;
	
	vector <int> a (N);
	for (int i(0); i < N; i++)
		cin >> a[i];
	
	vector <int> pre(N), dp(N, INT_MAX);
	for (int i(0); i < N; i++) {
		auto it = lower_bound(dp.begin(), dp.end(), a[i] + X);
		int index = distance(dp.begin(), it);
		pre[i] = index;
		
		it = lower_bound(dp.begin(), dp.end(), a[i]);
		*it = a[i];
	}
	int ans(0);
	vector <int> suf(N, 0);
	for (int i(N - 1); i >= 0; i--) {
		int l(0), r(N - i), pos;
		while (l <= r) {
			int mid = l + (r - l) / 2;
			if (suf[mid] > a[i]) l = mid + 1;
			else {
				pos = mid;
				r = mid - 1;
			}
		}
		suf[pos] = a[i];
		ans = max(ans, pre[i] + pos + 1);
	}
	
	cout << ans << '\n';
		
	return 0;
}
			

Compilation message (stderr)

glo.cpp: In function 'int main()':
glo.cpp:36:25: warning: 'pos' may be used uninitialized in this function [-Wmaybe-uninitialized]
   36 |   ans = max(ans, pre[i] + pos + 1);
#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...