Submission #1293529

#TimeUsernameProblemLanguageResultExecution timeMemory
1293529AbdullahIshfaqGlobal Warming (CEOI18_glo)C++20
100 / 100
42 ms3544 KiB
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define ld long double
#define MOD 998244353
int t[200005], p[200005], INF = 1e9;
void solve()
{
	int n, x, ans = 0;
    cin >> n >> x;
    for (int i = 0; i < n; i++)
        cin >> t[i];
    vector<int> dp(n, INF);
    for (int i = 0; i < n; i++)
    {
        int j = lower_bound(dp.begin(), dp.end(), t[i]) - dp.begin();
        dp[j] = t[i];
        p[i] = j + 1;
        ans = max(ans, p[i]);
    }
    dp = vector<int>(n, INF);
    for (int i = n - 1; i >= 0; i--)
    {
        int pos = lower_bound(dp.begin(), dp.end(), x - t[i]) - dp.begin();
        ans = max(ans, p[i] + pos);
        pos = lower_bound(dp.begin(), dp.end(), -t[i]) - dp.begin();
        dp[pos] = -t[i];
    }
    cout << ans;
}
int main()
{
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	int t = 1;
	// cin >> t;
	// cout << fixed << setprecision(12);
	for (int i = 1; i <= t; i++)
	{
		solve();
	}
}
#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...