通过所有 hack 与样例 但是 0pts 萌新求调
  • 板块P1750 出栈序列
  • 楼主02Ljh
  • 当前回复2
  • 已保存回复2
  • 发布时间2022/8/13 20:45
  • 上次更新2023/10/27 15:33:40
查看原帖
通过所有 hack 与样例 但是 0pts 萌新求调
578004
02Ljh楼主2022/8/13 20:45
#include<bits/stdc++.h>
using namespace std;
#define INF 0x3f3f3f3f
vector <int> q;
/*void pr()
{
    cout<<"your stack size is "<<q.size()<<endl<<"element:";
    for(int i=0;i<q.size();i++)
    {
        cout<<q[i]<<" ";
    }
    cout<<endl;
    return ;
}*/
int main()
{
	int n,c;
	cin>>n>>c;
	int minn=INF,mins=0;
	for(int i=0;i<n;i++)
    {
        int a;
        cin>>a;
        q.push_back(a);
    }
	for(int i=0;i<c;i++)
    {
        int a=q[i];
        if(minn>a)
        {
            mins=i;
            minn=a;
        }
    }
    int b_n=n-c;
    cout<<minn;
    //cout<<"mins="<<mins;
    q.erase(q.begin()+mins);
    int pos=mins;
    while(b_n>0&&!q.empty())
    {
        //cout<<"pos="<<pos<<"\n";
        int maxn=(pos==0?INF:q[pos-1]),maxs=-19;
        if(pos==0) maxn=INF;
        for(int i=0;i<(c-pos);i++)
        {
            if(maxn>q[i+pos])
            {
                maxn=q[pos+i];
                maxs=pos+i;
            }
        }
        if(maxs==-19)
        {
            if(q.size()>pos-1) q.erase(q.begin()+pos-1);
            else break;
            pos--;
        }
        else
        {
            if(q.size()>maxs) q.erase(q.begin()+maxs);
            else break;
            pos=maxs;
            b_n--;
        }
        cout<<" "<<maxn;
    }
    while(!q.empty())
    {
        if(q.front()<q.back()) { cout<<" "<<q.front(); q.erase(q.begin()); }
        else { cout<<" "<<q.back(); q.pop_back(); }
    }
	return 0;
}
2022/8/13 20:45
加载中...