只有sub3WA了,是我的问题还是题目的问题?
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
int s,t;
int n,x,y;
int b[N],c[N];
int a[N],ans[N];
int q[N],w[N];
bool cmp(int u,int i){
return u>i;
}
int main(){
scanf("%d%d",&s,&t);
while(t--){
memset(a,0,sizeof(a));memset(ans,0,sizeof(ans));
scanf("%d%d%d",&n,&x,&y);
for(int i=1;i<=n;i++)
scanf("%d",&b[i]),a[b[i]]++,c[i]=b[i];
a[b[1]]--;
sort(c+1,c+n+1,cmp);
int cnt=unique(c+1,c+n+1)-c-1;
for(int i=1;i<=cnt;i++){
int sum=a[c[i]];
if(sum==0){
ans[c[i]]=1;
continue;
}
if(sum%2==0||(c[i]==b[1]&&sum%2==1)){
if(y){
if(x>=sum-1){
q[c[i]]=sum-1;
w[c[i]]=1;
x-=(sum-1),y--;
}
else{
q[c[i]]=x;
w[c[i]]=sum-x;
x=0,y-=(sum-x);
}
ans[c[i]]=1;
}
else q[c[i]]=sum,x-=(sum);
}
else{
if(x>=sum) q[c[i]]=sum,x-=(sum);
else{
q[c[i]]=x;
w[c[i]]=sum-x;
x=0,y-=(sum-x);
}
ans[c[i]]=1;
}
}
bool bk=0;
for(int i=N-1;i>=0;i--){
if(ans[i]){
bk=1;
for(int j=i;j>=0;j--)
printf("%d",ans[j]);
}
if(bk) break;
}
if(!bk) printf("0");
puts("");
for(int i=1;i<n;i++){
if(q[b[i+1]]) printf("^"),q[b[i+1]]--;
else printf("|"),w[b[i+1]]--;
}
puts("");
}
return 0;
}