萌新WA40pts求助
查看原帖
萌新WA40pts求助
203008
山田リョウ楼主2022/5/4 00:40
// Problem: P2827 [NOIP2016 提高组] 蚯蚓
// Contest: Luogu
// URL: https://www.luogu.com.cn/problem/P2827
// Memory Limit: 500 MB
// Time Limit: 1000 ms

#include<stdio.h>
#include<algorithm>
#include<functional>
const int inf=0x80000000;
int a[100001],q2[7000001],q3[7000001],n;
int main(){
	int m,q,u,v,t;
	scanf("%d%d%d%d%d%d",&n,&m,&q,&u,&v,&t);
	for(int i=0;i<n;++i)scanf("%d",a+i);
	std::sort(a,a+n,std::greater<int>());
	int l1=0,r1=n,l2=0,r2=0,l3=0,r3=0;
	for(int i=1;i<=m;++i){
		int t1=(l1==r1?inf:a[l1]),t2=(l2==r2?inf:q2[l2]),t3=(l3==r3?inf:q3[l3]),res,len1,len2;
		if(t1>=t2&&t1>=t3)++l1,res=t1;
		else if(t2>=t1&&t2>=t3)++l2,res=t2;
		else ++l3,res=t3;
		res+=(i-1)*q;
		len1=(long long)res*u/v,len2=res-len1;
		if(len1<len2)q2[r2++]=len1-i*q,q3[r3++]=len2-i*q;
		else q2[r2++]=len2-i*q,q3[r3++]=len1-i*q;
		if(!(i%t))printf("%d ",res);
	}
	puts("");
	for(int i=1;i<=n+m;++i){
		int t1=(l1==r1?0x80000000:a[l1]),t2=(l2==r2?0x80000000:q2[l2]),t3=(l3==r3?0x80000000:q3[l3]),res;
		if(t1>t2&&t1>t3)++l1,res=t1;
		else if(t2>t1&&t2>t3)++l2,res=t2;
		else ++l3,res=t3;
		if(!(i%t))printf("%d ",res+m*q);
	}
	return 0;
}
2022/5/4 00:40
加载中...