# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
760334 |
2023-06-17T12:56:33 Z |
8e7 |
Sequence (APIO23_sequence) |
C++17 |
|
908 ms |
56284 KB |
#include "sequence.h"
//Challenge: Accepted
#include <bits/stdc++.h>
using namespace std;
#ifdef zisk
void debug(){cout << endl;}
template<class T, class ... U> void debug(T a, U ...b){cout << a << " ", debug(b...);}
template<class T> void pary(T l, T r) {
while (l != r) cout << *l << " ", l++;
cout << endl;
}
#else
#define debug(...) 0
#define pary(...) 0
#endif
#define ll long long
#define maxn 500005
#define ff first
#define ss second
#define pii pair<int, int>
const int inf = 1<<30;
struct segtree{
int ma[4*maxn], mi[4*maxn], tag[4*maxn];
void init(int cur, int l, int r) {
if (r <= l) return;
tag[cur] = 0;
if (r - l == 1) {
ma[cur] = mi[cur] = l+1;
return;
}
int m = (l + r) / 2;
init(cur*2, l, m), init(cur*2+1, m, r);
ma[cur] = max(ma[cur*2], ma[cur*2+1]);
mi[cur] = min(mi[cur*2], mi[cur*2+1]);
}
void push(int cur, int l, int r) {
ma[cur] += tag[cur];
mi[cur] += tag[cur];
if (r - l > 1) {
tag[cur*2] += tag[cur];
tag[cur*2+1] += tag[cur];
}
tag[cur] = 0;
}
void modify(int cur, int l, int r, int ql, int qr, int v) {
if (r <= l || ql >= r || qr <= l) return;
push(cur, l, r);
if (ql <= l && qr >= r) {
tag[cur] += v;
return;
}
int m = (l + r) / 2;
modify(cur*2, l, m, ql, qr, v);
modify(cur*2+1, m, r, ql, qr, v);
push(cur*2, l, m), push(cur*2+1, m, r);
ma[cur] = max(ma[cur*2], ma[cur*2+1]);
mi[cur] = min(mi[cur*2], mi[cur*2+1]);
}
pii query(int cur, int l, int r, int ql, int qr) { //(ma, mi)
if (r <= l || ql >= r || qr <= l) return {-inf, inf};
push(cur, l, r);
if (ql <= l && qr >= r) return make_pair(ma[cur], mi[cur]);
int m = (l + r) / 2;
pii pl = query(cur*2, l, m, ql, qr), pr = query(cur*2+1, m, r, ql, qr);
pl.ff = max(pl.ff, pr.ff);
pl.ss = min(pl.ss, pr.ss);
return pl;
}
int get(int cur, int l, int r, int x) {
if (r <= l) return 0;
push(cur, l, r);
if (r - l == 1) return ma[cur];
int m = (l + r) / 2;
if (x < m) return get(cur*2, l, m, x);
else return get(cur*2+1, m, r, x);
}
} pref, pref2;
vector<int> pos[maxn];
int sequence(int N, std::vector<int> A) {
pref.init(1, 0, N);
pref2.init(1, 0, N);
for (int i = 0;i < N;i++) {
pos[A[i]].push_back(i);
}
//for (int j = 0;j < N;j++) cout << pref.get(1,0, N, j) << " ";
//cout << endl;
int ans = 1;
for (int i = 1;i <= N;i++) {
int siz = pos[i].size();
if (siz == 0) continue;
for (int j = 0;j < siz;j++) {
pref.modify(1, 0, N, pos[i][j], N, -2);
}
//for (int j = 0;j < N;j++) cout << pref.get(1,0, N, j) << " ";
//cout << endl;
auto check = [&] (int ind, int j) {
int l = pos[i][ind], r = pos[i][j], cnt = j - ind + 1; //[l, r]
pii pl = pref.query(1, 0, N, 0, l), pr = pref.query(1, 0, N, r, N);
pl.ff = max(pl.ff, 0), pl.ss = min(pl.ss, 0);
pii p = {pr.ff - pl.ss, pr.ss - pl.ff};
pl = pref2.query(1, 0, N, 0, l), pr = pref2.query(1, 0, N, r, N);
pl.ff = max(pl.ff, 0), pl.ss = min(pl.ss, 0);
pii p2 = {pr.ff - pl.ss, pr.ss - pl.ff};
//debug(l, r, p.ss, p2.ff);
//debug(ind, j, p.ss, p.ff);
if ((p.ss <= 0 && 0 <= p2.ff)) {
ans = max(ans, j - ind + 1);
return true;
} else {
return false;
}
};
int ind = 0;
for (int j = 0;j < siz;j++) {
while (ind < j) {
if (check(ind, j)) break;
ind++;
}
ans = max(ans, j - ind + 1);
}
for (int j = 0;j < siz;j++) {
pref2.modify(1, 0, N, pos[i][j], N, -2);
}
}
return ans;
}
Compilation message
sequence.cpp: In lambda function:
sequence.cpp:101:40: warning: unused variable 'cnt' [-Wunused-variable]
101 | int l = pos[i][ind], r = pos[i][j], cnt = j - ind + 1; //[l, r]
| ^~~
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
7 ms |
11988 KB |
Output is correct |
2 |
Correct |
5 ms |
11988 KB |
Output is correct |
3 |
Correct |
6 ms |
12100 KB |
Output is correct |
4 |
Correct |
6 ms |
11988 KB |
Output is correct |
5 |
Correct |
5 ms |
11988 KB |
Output is correct |
6 |
Correct |
6 ms |
11988 KB |
Output is correct |
7 |
Correct |
7 ms |
11988 KB |
Output is correct |
8 |
Correct |
6 ms |
11988 KB |
Output is correct |
9 |
Correct |
6 ms |
11988 KB |
Output is correct |
10 |
Correct |
6 ms |
12048 KB |
Output is correct |
11 |
Correct |
5 ms |
11988 KB |
Output is correct |
12 |
Correct |
5 ms |
11988 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
7 ms |
11988 KB |
Output is correct |
2 |
Correct |
5 ms |
11988 KB |
Output is correct |
3 |
Correct |
6 ms |
12100 KB |
Output is correct |
4 |
Correct |
6 ms |
11988 KB |
Output is correct |
5 |
Correct |
5 ms |
11988 KB |
Output is correct |
6 |
Correct |
6 ms |
11988 KB |
Output is correct |
7 |
Correct |
7 ms |
11988 KB |
Output is correct |
8 |
Correct |
6 ms |
11988 KB |
Output is correct |
9 |
Correct |
6 ms |
11988 KB |
Output is correct |
10 |
Correct |
6 ms |
12048 KB |
Output is correct |
11 |
Correct |
5 ms |
11988 KB |
Output is correct |
12 |
Correct |
5 ms |
11988 KB |
Output is correct |
13 |
Correct |
7 ms |
12244 KB |
Output is correct |
14 |
Correct |
7 ms |
12248 KB |
Output is correct |
15 |
Correct |
7 ms |
12168 KB |
Output is correct |
16 |
Correct |
9 ms |
12116 KB |
Output is correct |
17 |
Correct |
9 ms |
12116 KB |
Output is correct |
18 |
Correct |
6 ms |
12244 KB |
Output is correct |
19 |
Correct |
8 ms |
12116 KB |
Output is correct |
20 |
Correct |
7 ms |
12116 KB |
Output is correct |
21 |
Correct |
7 ms |
12244 KB |
Output is correct |
22 |
Correct |
7 ms |
12212 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
7 ms |
11988 KB |
Output is correct |
2 |
Correct |
459 ms |
50756 KB |
Output is correct |
3 |
Correct |
507 ms |
50552 KB |
Output is correct |
4 |
Correct |
623 ms |
42720 KB |
Output is correct |
5 |
Correct |
481 ms |
49608 KB |
Output is correct |
6 |
Correct |
478 ms |
49608 KB |
Output is correct |
7 |
Correct |
616 ms |
43104 KB |
Output is correct |
8 |
Correct |
658 ms |
43200 KB |
Output is correct |
9 |
Correct |
586 ms |
43348 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
5 ms |
11988 KB |
Output is correct |
2 |
Correct |
727 ms |
43644 KB |
Output is correct |
3 |
Correct |
747 ms |
42816 KB |
Output is correct |
4 |
Correct |
797 ms |
42816 KB |
Output is correct |
5 |
Correct |
646 ms |
43760 KB |
Output is correct |
6 |
Correct |
761 ms |
42808 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
451 ms |
56284 KB |
Output is correct |
2 |
Correct |
446 ms |
56252 KB |
Output is correct |
3 |
Correct |
477 ms |
55712 KB |
Output is correct |
4 |
Correct |
481 ms |
55700 KB |
Output is correct |
5 |
Correct |
466 ms |
52372 KB |
Output is correct |
6 |
Correct |
455 ms |
52300 KB |
Output is correct |
7 |
Correct |
445 ms |
51168 KB |
Output is correct |
8 |
Correct |
438 ms |
50752 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
7 ms |
11988 KB |
Output is correct |
2 |
Correct |
5 ms |
11988 KB |
Output is correct |
3 |
Correct |
6 ms |
12100 KB |
Output is correct |
4 |
Correct |
6 ms |
11988 KB |
Output is correct |
5 |
Correct |
5 ms |
11988 KB |
Output is correct |
6 |
Correct |
6 ms |
11988 KB |
Output is correct |
7 |
Correct |
7 ms |
11988 KB |
Output is correct |
8 |
Correct |
6 ms |
11988 KB |
Output is correct |
9 |
Correct |
6 ms |
11988 KB |
Output is correct |
10 |
Correct |
6 ms |
12048 KB |
Output is correct |
11 |
Correct |
5 ms |
11988 KB |
Output is correct |
12 |
Correct |
5 ms |
11988 KB |
Output is correct |
13 |
Correct |
7 ms |
12244 KB |
Output is correct |
14 |
Correct |
7 ms |
12248 KB |
Output is correct |
15 |
Correct |
7 ms |
12168 KB |
Output is correct |
16 |
Correct |
9 ms |
12116 KB |
Output is correct |
17 |
Correct |
9 ms |
12116 KB |
Output is correct |
18 |
Correct |
6 ms |
12244 KB |
Output is correct |
19 |
Correct |
8 ms |
12116 KB |
Output is correct |
20 |
Correct |
7 ms |
12116 KB |
Output is correct |
21 |
Correct |
7 ms |
12244 KB |
Output is correct |
22 |
Correct |
7 ms |
12212 KB |
Output is correct |
23 |
Correct |
86 ms |
20436 KB |
Output is correct |
24 |
Correct |
89 ms |
20460 KB |
Output is correct |
25 |
Correct |
94 ms |
20444 KB |
Output is correct |
26 |
Correct |
112 ms |
19540 KB |
Output is correct |
27 |
Correct |
114 ms |
19540 KB |
Output is correct |
28 |
Correct |
121 ms |
19548 KB |
Output is correct |
29 |
Correct |
111 ms |
19284 KB |
Output is correct |
30 |
Correct |
114 ms |
19340 KB |
Output is correct |
31 |
Correct |
70 ms |
19412 KB |
Output is correct |
32 |
Correct |
52 ms |
21332 KB |
Output is correct |
33 |
Correct |
86 ms |
20180 KB |
Output is correct |
34 |
Correct |
95 ms |
20184 KB |
Output is correct |
35 |
Correct |
91 ms |
20228 KB |
Output is correct |
36 |
Correct |
92 ms |
20160 KB |
Output is correct |
37 |
Correct |
95 ms |
20180 KB |
Output is correct |
38 |
Correct |
91 ms |
20308 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
7 ms |
11988 KB |
Output is correct |
2 |
Correct |
5 ms |
11988 KB |
Output is correct |
3 |
Correct |
6 ms |
12100 KB |
Output is correct |
4 |
Correct |
6 ms |
11988 KB |
Output is correct |
5 |
Correct |
5 ms |
11988 KB |
Output is correct |
6 |
Correct |
6 ms |
11988 KB |
Output is correct |
7 |
Correct |
7 ms |
11988 KB |
Output is correct |
8 |
Correct |
6 ms |
11988 KB |
Output is correct |
9 |
Correct |
6 ms |
11988 KB |
Output is correct |
10 |
Correct |
6 ms |
12048 KB |
Output is correct |
11 |
Correct |
5 ms |
11988 KB |
Output is correct |
12 |
Correct |
5 ms |
11988 KB |
Output is correct |
13 |
Correct |
7 ms |
12244 KB |
Output is correct |
14 |
Correct |
7 ms |
12248 KB |
Output is correct |
15 |
Correct |
7 ms |
12168 KB |
Output is correct |
16 |
Correct |
9 ms |
12116 KB |
Output is correct |
17 |
Correct |
9 ms |
12116 KB |
Output is correct |
18 |
Correct |
6 ms |
12244 KB |
Output is correct |
19 |
Correct |
8 ms |
12116 KB |
Output is correct |
20 |
Correct |
7 ms |
12116 KB |
Output is correct |
21 |
Correct |
7 ms |
12244 KB |
Output is correct |
22 |
Correct |
7 ms |
12212 KB |
Output is correct |
23 |
Correct |
459 ms |
50756 KB |
Output is correct |
24 |
Correct |
507 ms |
50552 KB |
Output is correct |
25 |
Correct |
623 ms |
42720 KB |
Output is correct |
26 |
Correct |
481 ms |
49608 KB |
Output is correct |
27 |
Correct |
478 ms |
49608 KB |
Output is correct |
28 |
Correct |
616 ms |
43104 KB |
Output is correct |
29 |
Correct |
658 ms |
43200 KB |
Output is correct |
30 |
Correct |
586 ms |
43348 KB |
Output is correct |
31 |
Correct |
727 ms |
43644 KB |
Output is correct |
32 |
Correct |
747 ms |
42816 KB |
Output is correct |
33 |
Correct |
797 ms |
42816 KB |
Output is correct |
34 |
Correct |
646 ms |
43760 KB |
Output is correct |
35 |
Correct |
761 ms |
42808 KB |
Output is correct |
36 |
Correct |
451 ms |
56284 KB |
Output is correct |
37 |
Correct |
446 ms |
56252 KB |
Output is correct |
38 |
Correct |
477 ms |
55712 KB |
Output is correct |
39 |
Correct |
481 ms |
55700 KB |
Output is correct |
40 |
Correct |
466 ms |
52372 KB |
Output is correct |
41 |
Correct |
455 ms |
52300 KB |
Output is correct |
42 |
Correct |
445 ms |
51168 KB |
Output is correct |
43 |
Correct |
438 ms |
50752 KB |
Output is correct |
44 |
Correct |
86 ms |
20436 KB |
Output is correct |
45 |
Correct |
89 ms |
20460 KB |
Output is correct |
46 |
Correct |
94 ms |
20444 KB |
Output is correct |
47 |
Correct |
112 ms |
19540 KB |
Output is correct |
48 |
Correct |
114 ms |
19540 KB |
Output is correct |
49 |
Correct |
121 ms |
19548 KB |
Output is correct |
50 |
Correct |
111 ms |
19284 KB |
Output is correct |
51 |
Correct |
114 ms |
19340 KB |
Output is correct |
52 |
Correct |
70 ms |
19412 KB |
Output is correct |
53 |
Correct |
52 ms |
21332 KB |
Output is correct |
54 |
Correct |
86 ms |
20180 KB |
Output is correct |
55 |
Correct |
95 ms |
20184 KB |
Output is correct |
56 |
Correct |
91 ms |
20228 KB |
Output is correct |
57 |
Correct |
92 ms |
20160 KB |
Output is correct |
58 |
Correct |
95 ms |
20180 KB |
Output is correct |
59 |
Correct |
91 ms |
20308 KB |
Output is correct |
60 |
Correct |
809 ms |
50560 KB |
Output is correct |
61 |
Correct |
793 ms |
50540 KB |
Output is correct |
62 |
Correct |
790 ms |
50556 KB |
Output is correct |
63 |
Correct |
908 ms |
43832 KB |
Output is correct |
64 |
Correct |
883 ms |
43844 KB |
Output is correct |
65 |
Correct |
871 ms |
43724 KB |
Output is correct |
66 |
Correct |
818 ms |
42872 KB |
Output is correct |
67 |
Correct |
797 ms |
42996 KB |
Output is correct |
68 |
Correct |
485 ms |
42720 KB |
Output is correct |
69 |
Correct |
333 ms |
56280 KB |
Output is correct |
70 |
Correct |
790 ms |
49584 KB |
Output is correct |
71 |
Correct |
784 ms |
49452 KB |
Output is correct |
72 |
Correct |
765 ms |
48996 KB |
Output is correct |
73 |
Correct |
797 ms |
49296 KB |
Output is correct |
74 |
Correct |
788 ms |
48820 KB |
Output is correct |
75 |
Correct |
805 ms |
49320 KB |
Output is correct |