WA 95pts求助
查看原帖
WA 95pts求助
494992
underline__jian楼主2022/5/29 18:38
#include<iostream>
#include<algorithm>
#define re register
#define N 5000010

int n,m,q,u,v,t,a[N],b[N],c[N];
int lena,lenb,lenc,nowa,nowb,nowc,front,left,right;
inline bool cmp(int a,int b){
	return a>b;
}
inline int top(){
	int front,flag=0;
	if(nowa<=lena&&(!flag||a[nowa]>front)){
		flag=1;
		front=a[nowa];
	}
	if(nowb<=lenb&&(!flag||b[nowb]>front)){
		flag=2;
		front=b[nowb];
	}
	if(nowc<=lenc&&(!flag||c[nowc]>front)){
		flag=3;
		front=c[nowc];
	}
	if(flag==1) nowa++;
	else if(flag==2) nowb++;
	else nowc++;
	return front;
}
inline int read(){
	char c=getchar();
	bool m=false;
	int x=0;
	while(!isdigit(c)&&c!='-') c=getchar();
	if(c=='-') {
		m=1;
		c=getchar();
	}
	while(isdigit(c)) {
		x=x*10+c-'0';
		c=getchar();
	}
	if(m) return -x;
	return x;
}
int main(){
	n=read(),m=read(),q=read(),u=read(),v=read(),t=read();
	lena=n,nowa=nowb=nowc=1;
	for(re int i=1;i<=n;i++) a[i]=read();
	std::sort(a+1,a+n+1,cmp);
	for(re int i=1;i<=m;i++){
		front=top()+(i-1)*q;
		if(i % t==0) printf("%d ",front);
		left=front*(long long)u/v;
		right=front-left;
		if(left>right) std::swap(left,right);
		b[++lenb]=left-i*q;
		c[++lenc]=right-i*q;
	}
	puts("");
	for(re int i=1;i<=n+m;i++){
		front=top()+m*q;
		if(i%t==0) printf("%d ",front);
	}
	return 0;
}
2022/5/29 18:38
加载中...