代码求调 45pts
查看原帖
代码求调 45pts
552688
clx201022楼主2023/11/11 09:09

不吸氧 #2~6 #9~11 #13~14 #20 WA 其余 AC

#include <bits/stdc++.h>
using namespace std;
const int maxn=1e5;
const int maxm=7e6;
const int mininf=INT_MIN;
const int maxinf=INT_MAX;
#define int long long
int n,m,q,t,a[maxn],u,v;
queue<int> qiu1,qiu2,qiu3;
signed main()
{
    cin>>n>>m>>q>>u>>v>>t;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
    }
    sort(a+1,a+n+1,[](int a,int b)->bool{return a>b;});//排序
    for(int i=1;i<=n;i++)
    {
        qiu1.push(a[i]);
    }//队列初始化
    for(int now=0,zzz2;now<m;now++)
    {
        pair<int,int>zzz;
        zzz.first=mininf;
        zzz.second=1;
        if(!qiu1.empty()&&qiu1.front()>zzz.first)
        {
            zzz.first=qiu1.front();
            zzz.second=1;
        }
        if(!qiu2.empty()&&qiu2.front()>zzz.first)
        {
            zzz.first=qiu2.front();
            zzz.second=2;
        }
        if(!qiu3.empty()&&qiu3.front()>zzz.first)
        {
            zzz.first=qiu3.front();
            zzz.second=3;
        }
        zzz.first+=q*now;//真实值
        switch(zzz.second)
        {
            case 1:
            qiu1.pop();
            break;
            case 2:
            qiu2.pop();
            break;
            case 3:
            qiu3.pop();
            break;
        }
        zzz2=zzz.first*((long double)u/(long double)v);/*p 系数*/
        qiu2.push(zzz2-q*(now+1));//-q*(now+1) 求偏移值
        qiu3.push((zzz.first-zzz2)-q*(now+1));//-q*(now+1) 求偏移值
        if(now%t==t-1)
            cout<<zzz.first<<' ';
    }
    cout<<endl;
    for(int i=1;i<=n+m;i++)
    {
        pair<int,int>zzz;
        zzz.first=mininf;
        zzz.second=0;
        if(!qiu1.empty()&&qiu1.front()>zzz.first)
        {
            zzz.first=qiu1.front();
            zzz.second=1;
        }
        if(!qiu2.empty()&&qiu2.front()>zzz.first)
        {
            zzz.first=qiu2.front();
            zzz.second=2;
        }
        if(!qiu3.empty()&&qiu3.front()>zzz.first)
        {
            zzz.first=qiu3.front();
            zzz.second=3;
        }
        zzz.first+=q*m;//真实值
        switch(zzz.second)
        {
            case 1:
            qiu1.pop();
            break;
            case 2:
            qiu2.pop();
            break;
            case 3:
            qiu3.pop();
            break;
        }
        if(i%t==0)
            cout<<zzz.first<<' ';
    }
    cout<<endl;
    return 0;
}
2023/11/11 09:09
加载中...