Submission #55129546
Source Code Expand
// {{{
#include <bits/stdc++.h>
using namespace std;
using LL = long long;
using vi = vector<int>;
using pii = pair<int, int>;
#define sz(x) (int)((x).size())
#define all(x) (x).begin(), (x).end()
#define clr(a, b) memset(a, b, sizeof(a))
#define debug(x...)
#define debug_arr(x...)
#ifdef LOCAL
#include "prettyprint.hpp"
#endif
// }}}
// clang-format off
template <class T = LL>
struct fenwick {
int _n; vector<T> arr;
fenwick() = default;
fenwick(int size) { init(size); }
void init(int size) { _n = size + 2, arr.assign(_n + 1, INT_MIN); }
void set(int k, T num) { for (++k; k < _n; k += k & (-k)) arr[k] = max(arr[k], num); }
T mx(int k) const {
if (k < 0) return INT_MIN;
T s = INT_MIN;
for (++k; k; k -= k & (-k)) s = max(s, arr[k]);
return s;
}
};
// clang-format on
unordered_map<int, int> cord_mp, rev_mp;
void compress(vi a)
{
cord_mp.clear(), rev_mp.clear();
vi d = a;
sort(all(d));
d.resize(unique(all(d)) - d.begin());
for (int i = 0; i < sz(d); ++i) cord_mp[d[i]] = i + 1, rev_mp[i + 1] = d[i];
}
const int N = 2e5 + 10;
int n;
int oa[N], a[N];
// int dp[2][N][N];
int main()
{
#ifdef LOCAL
freopen("in", "r", stdin);
// freopen("out", "w", stdout);
#endif
while (cin >> n)
{
vi aa;
for (int i = 1; i <= n; ++i)
{
cin >> a[i];
oa[i] = a[i];
aa.push_back(a[i]);
aa.push_back(a[i] + 1);
}
if (n <= 2)
{
cout << n << endl;
continue;
}
// if (n > 100)
//{
// assert(0);
// continue;
//}
compress(aa);
cord_mp[0] = 0, rev_mp[0] = 0;
for (int i = 1; i <= n; ++i) a[i] = cord_mp[a[i]];
int tot = cord_mp.size();
fenwick<int> dp0(tot + 1), dp1(tot + 1);
dp0.set(0, 0), dp1.set(0, 0);
// clr(dp, -0x3f);
// dp[0][0][0] = 0;
// dp[1][0][0] = 0;
for (int i = 1; i <= n; i++)
{
// dp0
int maxv1 = 0;
int q = dp0.mx(a[i] - 1) + 1;
maxv1 = max(maxv1, q);
// dp1 a[i] not change
int maxv2 = 0;
int q1 = dp0.mx(a[i] - 1) + 1;
int q2 = dp1.mx(a[i] - 1) + 1;
maxv2 = max(maxv2, q1);
maxv2 = max(maxv2, q2);
// dp1 set a[i] as a[i-1]+1
int change_idx = cord_mp[oa[i - 1] + 1];
int maxv3 = 0;
int q3 = dp0.mx(change_idx - 1) + 1;
maxv3 = max(maxv3, q3);
dp0.set(a[i], maxv1);
dp1.set(a[i], maxv2);
dp1.set(change_idx, maxv3);
// debug(i, q, q1, q2, maxv1, maxv2);
/*
// dp0
for (int j = 0; j <= tot; j++)
{
int maxv11 = dp[0][i - 1][j];
if (j == a[i])
{
for (int k = 0; k < j; k++)
{
maxv11 = max(maxv11, dp[0][i - 1][k] + 1);
}
}
dp[0][i][j] = maxv11;
}
// dp1
for (int j = 0; j <= tot; j++)
{
// int maxv22 = dp[1][i - 1][j];
int maxv22 = max(dp[1][i - 1][j], dp[0][i - 1][j]);
// change a[i] to any but not necessary
// for (int k = 0; k < j; k++)
//{
// maxv22 = max(maxv22, dp[0][i - 1][k] + 1);
//}
int change_idx = 0;
if (i > 1) change_idx = cord_mp[oa[i - 1] + 1];
if (j == change_idx)
{
for (int k = 0; k < j; k++)
{
// debug("here", dp[0][i - 1][change_idx]);
maxv22 = max(maxv22, dp[0][i - 1][k] + 1);
}
}
// debug(i, j, change_idx);
if (j == a[i])
{
for (int k = 0; k < j; k++)
{
maxv22 = max(maxv22, dp[1][i - 1][k] + 1);
}
}
dp[1][i][j] = maxv22;
}
*/
}
int ans = dp0.mx(tot);
ans = max(ans, dp1.mx(tot));
cout << ans << endl;
// int ans2 = 0;
// for (int j = 0; j <= tot; j++)
//{
// ans2 = max(ans2, dp[0][n][j]);
// ans2 = max(ans2, dp[1][n][j]);
//}
// assert(ans2 > 0);
// cout << ans2 << endl;
}
return 0;
}
Submission Info
| Submission Time |
|
| Task |
G - Suitable Edit for LIS |
| User |
mickeyandkaka |
| Language |
C++ 20 (gcc 12.2) |
| Score |
625 |
| Code Size |
4867 Byte |
| Status |
WA |
| Exec Time |
176 ms |
| Memory |
45496 KiB |
Judge Result
| Set Name |
Sample |
All |
AfterContest |
| Score / Max Score |
0 / 0 |
625 / 625 |
0 / 0 |
| Status |
|
|
|
| Set Name |
Test Cases |
| Sample |
00_sample_00.txt, 00_sample_01.txt |
| All |
00_sample_00.txt, 00_sample_01.txt, 01_internal_00.txt, 01_internal_01.txt, 01_internal_02.txt, 01_internal_03.txt, 01_internal_04.txt, 01_internal_05.txt, 01_internal_06.txt, 01_internal_07.txt, 01_internal_08.txt, 01_internal_09.txt, 01_internal_10.txt, 01_internal_11.txt, 01_internal_12.txt, 01_internal_13.txt, 01_internal_14.txt, 01_internal_15.txt, 01_internal_16.txt, 01_internal_17.txt, 01_internal_18.txt, 01_internal_19.txt, 01_internal_20.txt, 01_internal_21.txt, 01_internal_22.txt, 01_internal_23.txt, 01_internal_24.txt, 01_internal_25.txt, 01_internal_26.txt, 01_internal_27.txt, 01_internal_28.txt, 01_internal_29.txt, 01_internal_30.txt, 01_internal_31.txt, 01_internal_32.txt, 01_internal_33.txt, 01_internal_34.txt, 01_internal_35.txt, 01_internal_36.txt, 01_internal_37.txt, 01_internal_38.txt, 01_internal_39.txt, 01_internal_40.txt, 01_internal_41.txt, 01_internal_42.txt, 01_internal_43.txt, 01_internal_44.txt, 01_internal_45.txt |
| AfterContest |
00_sample_00.txt, 00_sample_01.txt, 01_internal_00.txt, 01_internal_01.txt, 01_internal_02.txt, 01_internal_03.txt, 01_internal_04.txt, 01_internal_05.txt, 01_internal_06.txt, 01_internal_07.txt, 01_internal_08.txt, 01_internal_09.txt, 01_internal_10.txt, 01_internal_11.txt, 01_internal_12.txt, 01_internal_13.txt, 01_internal_14.txt, 01_internal_15.txt, 01_internal_16.txt, 01_internal_17.txt, 01_internal_18.txt, 01_internal_19.txt, 01_internal_20.txt, 01_internal_21.txt, 01_internal_22.txt, 01_internal_23.txt, 01_internal_24.txt, 01_internal_25.txt, 01_internal_26.txt, 01_internal_27.txt, 01_internal_28.txt, 01_internal_29.txt, 01_internal_30.txt, 01_internal_31.txt, 01_internal_32.txt, 01_internal_33.txt, 01_internal_34.txt, 01_internal_35.txt, 01_internal_36.txt, 01_internal_37.txt, 01_internal_38.txt, 01_internal_39.txt, 01_internal_40.txt, 01_internal_41.txt, 01_internal_42.txt, 01_internal_43.txt, 01_internal_44.txt, 01_internal_45.txt, 02_after_contest_00.txt, 02_after_contest_01.txt, 02_after_contest_02.txt, 02_after_contest_03.txt, 02_after_contest_04.txt |
| Case Name |
Status |
Exec Time |
Memory |
| 00_sample_00.txt |
AC |
1 ms |
3496 KiB |
| 00_sample_01.txt |
AC |
1 ms |
3536 KiB |
| 01_internal_00.txt |
AC |
1 ms |
3460 KiB |
| 01_internal_01.txt |
AC |
99 ms |
28300 KiB |
| 01_internal_02.txt |
AC |
10 ms |
6232 KiB |
| 01_internal_03.txt |
AC |
176 ms |
45496 KiB |
| 01_internal_04.txt |
AC |
33 ms |
9360 KiB |
| 01_internal_05.txt |
AC |
48 ms |
9464 KiB |
| 01_internal_06.txt |
AC |
61 ms |
9884 KiB |
| 01_internal_07.txt |
AC |
83 ms |
20276 KiB |
| 01_internal_08.txt |
AC |
82 ms |
19896 KiB |
| 01_internal_09.txt |
AC |
82 ms |
14820 KiB |
| 01_internal_10.txt |
AC |
71 ms |
10924 KiB |
| 01_internal_11.txt |
AC |
66 ms |
10500 KiB |
| 01_internal_12.txt |
AC |
79 ms |
12624 KiB |
| 01_internal_13.txt |
AC |
76 ms |
12084 KiB |
| 01_internal_14.txt |
AC |
27 ms |
9436 KiB |
| 01_internal_15.txt |
AC |
27 ms |
9364 KiB |
| 01_internal_16.txt |
AC |
26 ms |
9448 KiB |
| 01_internal_17.txt |
AC |
33 ms |
9392 KiB |
| 01_internal_18.txt |
AC |
36 ms |
9484 KiB |
| 01_internal_19.txt |
AC |
36 ms |
9420 KiB |
| 01_internal_20.txt |
AC |
43 ms |
10176 KiB |
| 01_internal_21.txt |
AC |
42 ms |
9916 KiB |
| 01_internal_22.txt |
AC |
38 ms |
9488 KiB |
| 01_internal_23.txt |
AC |
64 ms |
19472 KiB |
| 01_internal_24.txt |
AC |
60 ms |
18604 KiB |
| 01_internal_25.txt |
AC |
52 ms |
12004 KiB |
| 01_internal_26.txt |
AC |
81 ms |
29012 KiB |
| 01_internal_27.txt |
AC |
48 ms |
11024 KiB |
| 01_internal_28.txt |
AC |
92 ms |
31668 KiB |
| 01_internal_29.txt |
AC |
31 ms |
9440 KiB |
| 01_internal_30.txt |
AC |
26 ms |
9392 KiB |
| 01_internal_31.txt |
AC |
27 ms |
9516 KiB |
| 01_internal_32.txt |
AC |
43 ms |
9400 KiB |
| 01_internal_33.txt |
AC |
48 ms |
9400 KiB |
| 01_internal_34.txt |
AC |
51 ms |
9396 KiB |
| 01_internal_35.txt |
AC |
62 ms |
9896 KiB |
| 01_internal_36.txt |
AC |
62 ms |
9976 KiB |
| 01_internal_37.txt |
AC |
56 ms |
9624 KiB |
| 01_internal_38.txt |
AC |
59 ms |
9748 KiB |
| 01_internal_39.txt |
AC |
97 ms |
19956 KiB |
| 01_internal_40.txt |
AC |
88 ms |
15348 KiB |
| 01_internal_41.txt |
AC |
133 ms |
32676 KiB |
| 01_internal_42.txt |
AC |
78 ms |
12256 KiB |
| 01_internal_43.txt |
AC |
116 ms |
28484 KiB |
| 01_internal_44.txt |
AC |
1 ms |
3464 KiB |
| 01_internal_45.txt |
AC |
1 ms |
3464 KiB |
| 02_after_contest_00.txt |
WA |
1 ms |
3576 KiB |
| 02_after_contest_01.txt |
WA |
1 ms |
3508 KiB |
| 02_after_contest_02.txt |
AC |
1 ms |
3516 KiB |
| 02_after_contest_03.txt |
AC |
1 ms |
3472 KiB |
| 02_after_contest_04.txt |
AC |
81 ms |
27396 KiB |