#include "sequence.h"
#include <bits/stdc++.h>
#pragma GCC target("avx2")
#pragma GCC optimize("O3")
#pragma GCC optimize("unroll-loops")
using namespace std;
using ll = int;
const ll mod = 998244353;
#define fi first
#define se second
#define rep(i,n) for(ll i=0;i<n;i++)
#define all(x) x.begin(),x.end()
#define faster ios::sync_with_stdio(false);cin.tie(nullptr)
pair<int,int> f(pair<int,int> a,pair<int,int> b){
return {min(a.fi,b.fi),max(a.se,b.se)};
}
template <typename T>
struct RMQ{
const T INF={0,0};
ll N;
vector<T> dat;
vector<int> lazy;
RMQ(ll N_):N(),dat(N_*4,INF),lazy(N_*4,0){
ll x=1;
while(N_>x) x*=2;
N=x;
}
void eval(ll k,ll l,ll r){
if(lazy[k]==0) return;
if(k<N-1){
lazy[k*2+1]+=lazy[k];
lazy[k*2+2]+=lazy[k];
}
dat[k]={dat[k].fi+lazy[k],dat[k].se+lazy[k]};
lazy[k]=0;
}
void update(ll a,ll b,int x,ll k,ll l,ll r){
eval(k,l,r);
if(a<=l&&r<=b){
lazy[k]+=x;
eval(k,l,r);
}else if(a<r&&l<b){
update(a,b,x,k*2+1,l,(l+r)/2);
update(a,b,x,k*2+2,(l+r)/2,r);
dat[k]=f(dat[k*2+1],dat[k*2+2]);
}
}
void update(ll a,ll b,int x){update(a,b,x,0,0,N);}
T query_sub(ll a,ll b,ll k,ll l,ll r){
eval(k,l,r);
if(r<=a||b<=l){
return {1LL<<30,-1LL<<30};
}else if(a<=l&&r<=b){
return dat[k];
}else{
T vl=query_sub(a,b,k*2+1,l,(l+r)/2);
T vr=query_sub(a,b,k*2+2,(l+r)/2,r);
return f(vl,vr);
}
}
T query(ll a,ll b){return query_sub(a,b,0,0,N);}
};
int f(int N,vector<int> A){
vector<int> B=A;
sort(all(B));
B.erase(unique(all(B)),B.end());
vector<vector<int>> G(N+1);
rep(i,N) G[A[i]].push_back(i);
int ans=0;
RMQ<pair<int,int>> seg(N+1);
rep(j,N+1) seg.update(j,j+1,j);
rep(i,B.size()){
int l=0,r=0;
while(1){
if(r+1==G[B[i]].size()) break;
auto e1=seg.query(0,G[B[i]][l]+1);
auto e2=seg.query(G[B[i]][r+1]+1,N+1);
if(e1.fi<=e2.se&&e2.fi<=e1.se){
r++;
}else{
l++;
}
if(r<l) r++;
ans=max(ans,r-l+1);
}
for(int j:G[B[i]]){
seg.update(j+1,N+1,-2);
}
}
return ans;
}
int sequence(int N, std::vector<int> A) {
int ans=0;
vector<int> B=A;
sort(all(B));
rep(j,2){
int cnt=0;
rep(i,N) if(A[i]==B[(N-1+j)/2]) cnt++;
ans=max(ans,cnt);
}
ans=max(ans,f(N,A));
rep(i,N) A[i]=N+1-A[i];
ans=max(ans,f(N,A));
return ans;
}
Compilation message
sequence.cpp: In function 'int f(int, std::vector<int>)':
sequence.cpp:11:30: warning: comparison of integer expressions of different signedness: 'll' {aka 'int'} and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
11 | #define rep(i,n) for(ll i=0;i<n;i++)
......
75 | rep(i,B.size()){
| ~~~~~~~~~~
sequence.cpp:75:5: note: in expansion of macro 'rep'
75 | rep(i,B.size()){
| ^~~
sequence.cpp:78:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
78 | if(r+1==G[B[i]].size()) break;
| ~~~^~~~~~~~~~~~~~~~
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
348 KB |
Output is correct |
2 |
Correct |
0 ms |
348 KB |
Output is correct |
3 |
Correct |
0 ms |
344 KB |
Output is correct |
4 |
Correct |
1 ms |
348 KB |
Output is correct |
5 |
Correct |
0 ms |
348 KB |
Output is correct |
6 |
Correct |
0 ms |
348 KB |
Output is correct |
7 |
Correct |
0 ms |
348 KB |
Output is correct |
8 |
Correct |
1 ms |
348 KB |
Output is correct |
9 |
Correct |
0 ms |
348 KB |
Output is correct |
10 |
Correct |
0 ms |
348 KB |
Output is correct |
11 |
Correct |
0 ms |
348 KB |
Output is correct |
12 |
Correct |
0 ms |
348 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
348 KB |
Output is correct |
2 |
Correct |
0 ms |
348 KB |
Output is correct |
3 |
Correct |
0 ms |
344 KB |
Output is correct |
4 |
Correct |
1 ms |
348 KB |
Output is correct |
5 |
Correct |
0 ms |
348 KB |
Output is correct |
6 |
Correct |
0 ms |
348 KB |
Output is correct |
7 |
Correct |
0 ms |
348 KB |
Output is correct |
8 |
Correct |
1 ms |
348 KB |
Output is correct |
9 |
Correct |
0 ms |
348 KB |
Output is correct |
10 |
Correct |
0 ms |
348 KB |
Output is correct |
11 |
Correct |
0 ms |
348 KB |
Output is correct |
12 |
Correct |
0 ms |
348 KB |
Output is correct |
13 |
Correct |
4 ms |
604 KB |
Output is correct |
14 |
Correct |
4 ms |
604 KB |
Output is correct |
15 |
Correct |
3 ms |
604 KB |
Output is correct |
16 |
Correct |
3 ms |
604 KB |
Output is correct |
17 |
Correct |
3 ms |
600 KB |
Output is correct |
18 |
Correct |
2 ms |
604 KB |
Output is correct |
19 |
Correct |
3 ms |
604 KB |
Output is correct |
20 |
Correct |
3 ms |
604 KB |
Output is correct |
21 |
Correct |
3 ms |
600 KB |
Output is correct |
22 |
Correct |
3 ms |
604 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
348 KB |
Output is correct |
2 |
Correct |
809 ms |
55460 KB |
Output is correct |
3 |
Correct |
843 ms |
58860 KB |
Output is correct |
4 |
Correct |
821 ms |
48784 KB |
Output is correct |
5 |
Correct |
819 ms |
57660 KB |
Output is correct |
6 |
Correct |
779 ms |
57672 KB |
Output is correct |
7 |
Correct |
801 ms |
49316 KB |
Output is correct |
8 |
Correct |
821 ms |
49492 KB |
Output is correct |
9 |
Correct |
819 ms |
49492 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
348 KB |
Output is correct |
2 |
Correct |
889 ms |
50284 KB |
Output is correct |
3 |
Correct |
873 ms |
49104 KB |
Output is correct |
4 |
Correct |
935 ms |
49000 KB |
Output is correct |
5 |
Correct |
941 ms |
51352 KB |
Output is correct |
6 |
Correct |
831 ms |
48604 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
817 ms |
61104 KB |
Output is correct |
2 |
Correct |
823 ms |
64412 KB |
Output is correct |
3 |
Correct |
831 ms |
63828 KB |
Output is correct |
4 |
Correct |
828 ms |
63948 KB |
Output is correct |
5 |
Correct |
872 ms |
60420 KB |
Output is correct |
6 |
Correct |
848 ms |
60400 KB |
Output is correct |
7 |
Correct |
781 ms |
59336 KB |
Output is correct |
8 |
Correct |
775 ms |
58992 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
348 KB |
Output is correct |
2 |
Correct |
0 ms |
348 KB |
Output is correct |
3 |
Correct |
0 ms |
344 KB |
Output is correct |
4 |
Correct |
1 ms |
348 KB |
Output is correct |
5 |
Correct |
0 ms |
348 KB |
Output is correct |
6 |
Correct |
0 ms |
348 KB |
Output is correct |
7 |
Correct |
0 ms |
348 KB |
Output is correct |
8 |
Correct |
1 ms |
348 KB |
Output is correct |
9 |
Correct |
0 ms |
348 KB |
Output is correct |
10 |
Correct |
0 ms |
348 KB |
Output is correct |
11 |
Correct |
0 ms |
348 KB |
Output is correct |
12 |
Correct |
0 ms |
348 KB |
Output is correct |
13 |
Correct |
4 ms |
604 KB |
Output is correct |
14 |
Correct |
4 ms |
604 KB |
Output is correct |
15 |
Correct |
3 ms |
604 KB |
Output is correct |
16 |
Correct |
3 ms |
604 KB |
Output is correct |
17 |
Correct |
3 ms |
600 KB |
Output is correct |
18 |
Correct |
2 ms |
604 KB |
Output is correct |
19 |
Correct |
3 ms |
604 KB |
Output is correct |
20 |
Correct |
3 ms |
604 KB |
Output is correct |
21 |
Correct |
3 ms |
600 KB |
Output is correct |
22 |
Correct |
3 ms |
604 KB |
Output is correct |
23 |
Correct |
142 ms |
9220 KB |
Output is correct |
24 |
Correct |
140 ms |
9704 KB |
Output is correct |
25 |
Correct |
144 ms |
9692 KB |
Output is correct |
26 |
Correct |
156 ms |
8540 KB |
Output is correct |
27 |
Correct |
159 ms |
8540 KB |
Output is correct |
28 |
Correct |
156 ms |
8596 KB |
Output is correct |
29 |
Correct |
143 ms |
8224 KB |
Output is correct |
30 |
Correct |
163 ms |
8280 KB |
Output is correct |
31 |
Correct |
121 ms |
8896 KB |
Output is correct |
32 |
Correct |
71 ms |
10588 KB |
Output is correct |
33 |
Correct |
131 ms |
9488 KB |
Output is correct |
34 |
Correct |
139 ms |
9436 KB |
Output is correct |
35 |
Correct |
141 ms |
9456 KB |
Output is correct |
36 |
Correct |
144 ms |
9468 KB |
Output is correct |
37 |
Correct |
140 ms |
9492 KB |
Output is correct |
38 |
Correct |
158 ms |
9644 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
348 KB |
Output is correct |
2 |
Correct |
0 ms |
348 KB |
Output is correct |
3 |
Correct |
0 ms |
344 KB |
Output is correct |
4 |
Correct |
1 ms |
348 KB |
Output is correct |
5 |
Correct |
0 ms |
348 KB |
Output is correct |
6 |
Correct |
0 ms |
348 KB |
Output is correct |
7 |
Correct |
0 ms |
348 KB |
Output is correct |
8 |
Correct |
1 ms |
348 KB |
Output is correct |
9 |
Correct |
0 ms |
348 KB |
Output is correct |
10 |
Correct |
0 ms |
348 KB |
Output is correct |
11 |
Correct |
0 ms |
348 KB |
Output is correct |
12 |
Correct |
0 ms |
348 KB |
Output is correct |
13 |
Correct |
4 ms |
604 KB |
Output is correct |
14 |
Correct |
4 ms |
604 KB |
Output is correct |
15 |
Correct |
3 ms |
604 KB |
Output is correct |
16 |
Correct |
3 ms |
604 KB |
Output is correct |
17 |
Correct |
3 ms |
600 KB |
Output is correct |
18 |
Correct |
2 ms |
604 KB |
Output is correct |
19 |
Correct |
3 ms |
604 KB |
Output is correct |
20 |
Correct |
3 ms |
604 KB |
Output is correct |
21 |
Correct |
3 ms |
600 KB |
Output is correct |
22 |
Correct |
3 ms |
604 KB |
Output is correct |
23 |
Correct |
809 ms |
55460 KB |
Output is correct |
24 |
Correct |
843 ms |
58860 KB |
Output is correct |
25 |
Correct |
821 ms |
48784 KB |
Output is correct |
26 |
Correct |
819 ms |
57660 KB |
Output is correct |
27 |
Correct |
779 ms |
57672 KB |
Output is correct |
28 |
Correct |
801 ms |
49316 KB |
Output is correct |
29 |
Correct |
821 ms |
49492 KB |
Output is correct |
30 |
Correct |
819 ms |
49492 KB |
Output is correct |
31 |
Correct |
889 ms |
50284 KB |
Output is correct |
32 |
Correct |
873 ms |
49104 KB |
Output is correct |
33 |
Correct |
935 ms |
49000 KB |
Output is correct |
34 |
Correct |
941 ms |
51352 KB |
Output is correct |
35 |
Correct |
831 ms |
48604 KB |
Output is correct |
36 |
Correct |
817 ms |
61104 KB |
Output is correct |
37 |
Correct |
823 ms |
64412 KB |
Output is correct |
38 |
Correct |
831 ms |
63828 KB |
Output is correct |
39 |
Correct |
828 ms |
63948 KB |
Output is correct |
40 |
Correct |
872 ms |
60420 KB |
Output is correct |
41 |
Correct |
848 ms |
60400 KB |
Output is correct |
42 |
Correct |
781 ms |
59336 KB |
Output is correct |
43 |
Correct |
775 ms |
58992 KB |
Output is correct |
44 |
Correct |
142 ms |
9220 KB |
Output is correct |
45 |
Correct |
140 ms |
9704 KB |
Output is correct |
46 |
Correct |
144 ms |
9692 KB |
Output is correct |
47 |
Correct |
156 ms |
8540 KB |
Output is correct |
48 |
Correct |
159 ms |
8540 KB |
Output is correct |
49 |
Correct |
156 ms |
8596 KB |
Output is correct |
50 |
Correct |
143 ms |
8224 KB |
Output is correct |
51 |
Correct |
163 ms |
8280 KB |
Output is correct |
52 |
Correct |
121 ms |
8896 KB |
Output is correct |
53 |
Correct |
71 ms |
10588 KB |
Output is correct |
54 |
Correct |
131 ms |
9488 KB |
Output is correct |
55 |
Correct |
139 ms |
9436 KB |
Output is correct |
56 |
Correct |
141 ms |
9456 KB |
Output is correct |
57 |
Correct |
144 ms |
9468 KB |
Output is correct |
58 |
Correct |
140 ms |
9492 KB |
Output is correct |
59 |
Correct |
158 ms |
9644 KB |
Output is correct |
60 |
Correct |
1188 ms |
58760 KB |
Output is correct |
61 |
Correct |
1204 ms |
58688 KB |
Output is correct |
62 |
Correct |
1188 ms |
58776 KB |
Output is correct |
63 |
Correct |
1145 ms |
50588 KB |
Output is correct |
64 |
Correct |
1071 ms |
50780 KB |
Output is correct |
65 |
Correct |
1166 ms |
50516 KB |
Output is correct |
66 |
Correct |
989 ms |
49228 KB |
Output is correct |
67 |
Correct |
1006 ms |
49640 KB |
Output is correct |
68 |
Correct |
708 ms |
52856 KB |
Output is correct |
69 |
Correct |
522 ms |
64428 KB |
Output is correct |
70 |
Correct |
1166 ms |
57888 KB |
Output is correct |
71 |
Correct |
1166 ms |
57632 KB |
Output is correct |
72 |
Correct |
1106 ms |
57116 KB |
Output is correct |
73 |
Correct |
1142 ms |
57484 KB |
Output is correct |
74 |
Correct |
1155 ms |
57240 KB |
Output is correct |
75 |
Correct |
1154 ms |
57452 KB |
Output is correct |