Submission #731794

#TimeUsernameProblemLanguageResultExecution timeMemory
731794beabossGlobal Warming (CEOI18_glo)C++14
100 / 100
108 ms4304 KiB
#include "bits/stdc++.h"

using namespace std;

#define s second
#define f first
#define pb push_back


typedef long long ll;
typedef vector<int> vi;
typedef pair<int, int> pii;

// const int INF = 1e17;
const int N = 2*1e5 + 10;


int main() {
	
	int n, x;
	cin >> n >> x;

	vi vals(n);
	vi dp(n);
	vi cur;
	for (int i = 0; i < n; i++) {
		cin >> vals[i];
		
		auto ind = lower_bound(cur.begin(), cur.end(), vals[i]) - cur.begin();

		if (ind == cur.size()) cur.pb(vals[i]);
		else cur[ind] = vals[i];
		// cout << i << ind << endl;
		dp[i]=ind+1;
		
	}
	cur.erase(cur.begin(), cur.end());
	int ans = 0;
	for (int i = n-1; i >= 0; i--) {
		int possible = lower_bound(cur.begin(), cur.end(), -vals[i] + x) - cur.begin();
		// cout << i << possible << dp[i] << endl;
		ans = max(ans, dp[i] + possible);

		int ind = lower_bound(cur.begin(), cur.end(), -vals[i]) - cur.begin();
		if (ind == cur.size()) cur.pb(-vals[i]);
		else cur[ind]=-vals[i];


	}
	// cout << cur.size() << endl;
	// assert(dp[n-1] == cur.size());
	cout << ans << endl;

	
}

Compilation message (stderr)

glo.cpp: In function 'int main()':
glo.cpp:31:11: warning: comparison of integer expressions of different signedness: 'long int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   31 |   if (ind == cur.size()) cur.pb(vals[i]);
      |       ~~~~^~~~~~~~~~~~~
glo.cpp:45:11: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   45 |   if (ind == cur.size()) cur.pb(-vals[i]);
      |       ~~~~^~~~~~~~~~~~~
#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...