QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#666706 | #7685. Barkley II | i0stream | WA | 69ms | 24400kb | C++14 | 1.7kb | 2024-10-22 19:40:57 | 2024-10-22 19:41:12 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
const int N=5*1e5+100;
int n,m,ans,T,t,a[N],tr[N],vis[N];
map<int,int> pre;
vector<int> vec[N];
struct node{
int a,id;
}p[N];
struct Qr{
int mns,l,r;
}tmp[N];
inline bool cmp1(node x,node y){
if (x.a==y.a) return x.id<y.id;
else return x.a<y.a;
}
inline bool cmp2(Qr x,Qr y){
return x.r<y.r;
}
inline int lowbit(int x){return x&(-x);}
void modify(int x,int k){
while (x<=n){
tr[x]+=k;
x+=lowbit(x);
}
}
int query(int x){
int cnt=0;
while (x){
cnt+=tr[x];
x-=lowbit(x);
}
return cnt;
}
int main(){
scanf("%d",&T);
while (T--){
scanf("%d%d",&n,&m);
for (int i=1;i<=n;i++) vis[i]=0,tr[i]=0;
ans=0;t=0;
for (int i=1;i<=n;i++){
scanf("%d",&a[i]);
p[i].a=a[i];p[i].id=i;
}
sort(p+1,p+n+1,cmp1);
int cur=0;p[0].a=0;p[n+1].a=1e9;
for (int i=1;i<=n+1;i++)
if (p[i].a-p[i-1].a>1){
cur=p[i-1].a+1;
break;
}
for (int i=1;i<cur;i++) vec[i].clear();
for (int i=1;i<=n;i++)
if (a[i]<cur) vec[a[i]].push_back(i);
for (int i=1;i<cur;i++) vec[i].push_back(n+1);
for (int i=1;i<cur;i++){
if (vec[i][0]>1) tmp[++t]=(Qr){i,1,vec[i][0]-1};
for (int j=1;j<vec[i].size();j++)
if (vec[i][j-1]+1<=vec[i][j]-1) tmp[++t]=(Qr){i,vec[i][j-1]+1,vec[i][j]-1};
}
tmp[++t]=(Qr){cur,1,n};
pre.clear();
for (int i=1,j=1;i<=t;i++){
while (j<=tmp[i].r){
if (pre.find(a[j])!=pre.end()) modify(pre[a[j]],-1);
modify(j,1);
pre[a[j]]=j;
j++;
}
ans=max(ans,query(tmp[i].r)-query(tmp[i].l-1)-tmp[i].mns);
}
printf("%d\n",ans);
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 2ms
memory: 24400kb
input:
2 5 4 1 2 2 3 4 5 10000 5 2 3 4 1
output:
2 3
result:
ok 2 number(s): "2 3"
Test #2:
score: -100
Wrong Answer
time: 69ms
memory: 24308kb
input:
50000 10 19 12 6 1 12 11 15 4 1 13 18 10 8 8 7 6 7 6 2 2 3 4 8 10 6 3 2 6 6 5 2 3 4 5 6 10 11 6 3 7 9 2 1 2 10 10 4 10 6 6 1 2 6 1 1 3 4 2 1 10 9 8 5 3 9 1 7 5 5 1 1 10 5 1 4 3 2 5 4 5 3 5 2 10 14 3 8 12 10 4 2 3 13 7 3 10 14 5 5 12 2 8 1 13 9 8 5 10 7 5 5 6 6 1 5 3 7 3 4 10 7 5 1 4 6 1 6 4 3 7 5 10...
output:
6 5 4 4 2 4 3 7 4 4 4 5 2 3 6 6 7 5 7 6 5 5 6 2 6 8 7 2 5 5 6 2 2 3 4 5 3 3 7 3 2 5 6 1 3 5 3 3 3 8 6 6 5 7 4 4 5 4 6 6 6 3 7 3 6 3 3 7 7 6 6 7 4 3 3 4 4 6 3 4 6 6 4 5 5 9 4 5 7 5 3 5 2 2 5 6 6 8 4 3 4 5 5 5 7 7 3 2 6 5 3 5 4 4 5 6 6 5 6 7 7 4 5 7 4 7 2 7 6 6 6 5 4 2 5 4 2 3 6 5 2 6 5 5 4 3 5 6 6 6 ...
result:
wrong answer 127th numbers differ - expected: '3', found: '2'