25pts求助
查看原帖
25pts求助
229957
Wu_while楼主2022/2/24 15:47
#include<iostream>
#include<cstdio>
#include<queue>
#define MAXN 100010
#define MAXM 7000010
using namespace std;
int n,m,q,T;
double u,v,p;
int a[MAXN],pos;
int line1[MAXN+MAXM],line2[MAXN+MAXM];
int head1=1,head2=1,tail1,tail2;
int times;
priority_queue<int> pq;
int main()
{
	scanf("%d%d%d%lf%lf%d",&n,&m,&q,&u,&v,&T);
	p=u/v;
	for(int i=1;i<=n;i++)
		scanf("%d",&a[i]);
	pos=1;
	for(int i=1;i<=m;i++)
	{
		int t;
		if(pos<=n&&a[pos]>=line1[head1]&&a[pos]>=line2[head2])
			t=a[pos++];
		else if(line1[head1]>=line2[head2])
			t=line1[head1++];
		else
			t=line2[head2++];
		t+=times;
		if(i%T==0)
			printf("%d ",t);
		int a=(double)t*p;
		int b=t-a;
		times+=q;
		a-=times;
		b-=times;
		line1[++tail1]=a;
		line2[++tail2]=b;
	}
	printf("\n");
	for(int i=pos;i<=n;i++)
		pq.push(a[i]+times);
	for(int i=head1;i<=tail1;i++)
		pq.push(line1[i]+times);
	for(int i=head2;i<=tail2;i++)
		pq.push(line2[i]+times);
	for(int i=1;i<=n+m;i++)
	{
		if(i%T==0)
			printf("%d ",pq.top());
		pq.pop();
	}
	return 0;
}
2022/2/24 15:47
加载中...