90分求助,WA #11 #13
查看原帖
90分求助,WA #11 #13
154970
Surround_By_Gugugu楼主2021/10/4 01:04
#include <iostream>
#include <cstring>
#include <algorithm>
#include <cmath> 
#include <queue>
#include <limits.h>
using namespace std;
int n,m,q,u,v,t,sumq,h1=1,h2=1,h3=1,t1,t2=1,t3=1,l,rk;
int q1[10000010],q2[10000010],q3[10000010];
int lenth[100010];
bool cmp(int a,int b){return a>b;}
signed main(){
	scanf("%d %d %d %d %d %d",&n,&m,&q,&u,&v,&t);
	const double p=u*1.0/v;
	for(int i=0;i<=1e6;i++){
		q1[i]=q2[i]=q3[i]=INT_MIN;
	} 
	for (int i=1;i<=n;i++){
		scanf("%d",&q1[i]);
	}
	t1=n+1; 
	sort(q1+1,q1+1+n,cmp);
	for(int i=1;i<=m;i++){
		if(q1[h1]>=q2[h2]&&q1[h1]>=q3[h3]){
			l=q1[h1]+sumq;
			int l1=floor(l*p)-q-sumq,l2=l-floor(l*p)-q-sumq;
			q2[t2]=max(l1,l2);q3[t3]=min(l1,l2);
			h1++;t2++;t3++;
		}else if(q2[h2]>=q1[h1]&&q2[h2]>=q3[h3]){
			l=q2[h2]+sumq;
			int l1=floor(l*p)-q-sumq,l2=l-floor(l*p)-q-sumq;
			q2[t2]=max(l1,l2);q3[t3]=min(l1,l2);
			h2++;t2++;t3++;
		}else if(q3[h3]>=q1[h1]&&q3[h3]>=q2[h2]){
			l=q3[h3]+sumq;
			int l1=floor(l*p)-q-sumq,l2=l-floor(l*p)-q-sumq;
			q2[t2]=max(l1,l2);q3[t3]=min(l1,l2);
			h3++;t2++;t3++;
		}
		if(!(i%t)) printf("%d ",l);
		sumq+=q;
		//cout<<q2[1]<<endl;
	}
	printf("\n");
	while(h1<t1||h2<t2||h3<t3){
		rk++;
		if(q1[h1]>=q2[h2]&&q1[h1]>=q3[h3]){
			l=q1[h1]+sumq;
			h1++;
		}else if(q2[h2]>=q1[h1]&&q2[h2]>=q3[h3]){
			l=q2[h2]+sumq;
			h2++;
		}else if(q3[h3]>=q1[h1]&&q3[h3]>=q2[h2]){
			l=q3[h3]+sumq;
			h3++;
		}
		if (!(rk%t)) printf("%d ",l); 
	}
	return 0;
}

RT #11和#13一直WA,第二行总是有问题

2021/10/4 01:04
加载中...