求助三队列做法70wa
查看原帖
求助三队列做法70wa
371927
REAL_曼巴楼主2023/8/12 15:44
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int maxn=7e6+7;
int a[maxn];
signed main() {
    queue<int>q1,q2,q3;
    int n,m,q,u,v,t;
    double p=(double)u/v;
    cin>>n>>m>>q>>u>>v>>t;
    for(int i=1;i<=n;++i){
        cin>>a[i];
    }
    sort(a+1,a+n+1);
    for(int i=n;i>=1;--i){
        q1.push(a[i]);
    }
    int w=0,tp=0;
    for(int i=1;i<=m;++i){
        int maxn=-2147483647,cnt=0,f=0;
        if(!q1.empty() && maxn<q1.front())maxn=max(maxn,q1.front()),f=1;
        if(!q2.empty() && maxn<q2.front())maxn=max(maxn,q2.front()),f=2;
        if(!q3.empty() && maxn<q3.front())maxn=max(maxn,q3.front()),f=3;
        if(f==1)q1.pop();
        else if(f==2)q2.pop();
        else if(f==3)q3.pop();
        tp=maxn+w,w+=q;
        int d1=floor(tp*p/v)-w,d2=tp-d1-2*w;
        q2.push(d1),q3.push(d2);
        if(!(i%t))printf("%lld ",tp);
    }
    puts("");
    int k=0;
    while(!q1.empty()||!q2.empty()||!q3.empty()){
        int maxn=-2147483647,cnt=0,f=0;
        if(!q1.empty() && maxn<q1.front())maxn=max(maxn,q1.front()),f=1;
        if(!q2.empty() && maxn<q2.front())maxn=max(maxn,q2.front()),f=2;
        if(!q3.empty() && maxn<q3.front())maxn=max(maxn,q3.front()),f=3;
        if(f==1)q1.pop();
        else if(f==2)q2.pop();
        else if(f==3)q3.pop();
        if(!((++k)%t))printf("%lld ",maxn+w);
    }
    return 0;
}
2023/8/12 15:44
加载中...