22pts求调
查看原帖
22pts求调
701387
xiaoliebao1115楼主2024/7/28 21:49
#include<bits/stdc++.h>
using namespace std;
const int nn=1e6+5,mm=1e6+5;
int s,t,ans[nn],ans2[mm],mx;
struct node{
	int b,id;
}x[nn];
bool cmp(node l1,node l2){
	if(l1.b==l2.b) return l1.id<l2.id;
	return l1.b>l2.b;
}
int main(){
	cin>>s>>t;
	while(t--){
		int n,xx,y;
		scanf("%d%d%d",&n,&xx,&y);
		mx=0;
		for(int i=1;i<=n;i++)
			scanf("%d",&x[i].b),x[i].id=i,mx=max(mx,x[i].b);
		for(int i=0;i<=mx;i++) ans[i]=ans2[i]=0;
		sort(x+1,x+n+1,cmp);
		for(int i=1;i<=n;i++){
			int lstwz=n;
			for(int j=i+1;j<=n;j++){
				if(x[j].b!=x[i].b){
					lstwz=j-1;
					break;
				}
			}
			if((lstwz-i+1)%2==0&&y>0){
				ans[x[lstwz].id-1]=1;
				y--;
				ans2[x[i].b]=1;
			}
			else if((lstwz-i+1)%2==1) ans2[x[i].b]=1;
			i=lstwz;
		} 
		bool p=false;
		for(int i=mx;i>=0;i--) {
			if(ans2[i]!=0) p=true;
			if(p) printf("%d",ans2[i]);
		}
		if(!p) printf("0");
		putchar('\n');
		if(y!=0){
			for(int i=1;i<n;i++){
				if(ans[i]==0){
					ans[i]=1;
					y--;
				}
				if(y==0) break;
			}
		}
		for(int i=1;i<n;i++){
			if(ans[i]==1) putchar('|');
			else putchar('^');
		}
		putchar('\n');
	}
	return 0;
}

https://www.luogu.com.cn/record/169148056

2024/7/28 21:49
加载中...