10pts 求hack
  • 板块P1159 排行榜
  • 楼主紊莫turtle
  • 当前回复4
  • 已保存回复4
  • 发布时间2022/10/5 09:51
  • 上次更新2023/10/27 08:44:56
查看原帖
10pts 求hack
443675
紊莫turtle楼主2022/10/5 09:51

思路是对于“SAME”,就放到原位,“UP”就从下往上找一个空的位置放,“DOWN”则从上往下找。

#include <bits/stdc++.h>
using namespace std;
string ans[105],p[105];
int n,used[105],c[105];
int main()
{
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	{
		string s;
		cin>>p[i]>>s;
		if(s=="UP") c[i]=1;
		else if(s=="DOWN") c[i]=-1;
		else
		{
			ans[i]=p[i];
			used[i]=1;
		}
	}
	for(int i=1;i<=n;i++)
	{
		if(c[i]==1)
		{
			int pos=1;
			while(used[pos]) pos++;
			used[pos]=1;ans[pos]=p[i];
//			printf("i=%d,pos=%d\n",i,pos);
		}
		if(c[i]==-1)
		{
			
			int pos=n;
			while(used[pos]) pos--;
			used[pos]=1;ans[pos]=p[i];
//			printf("i=%d,pos=%d\n",i,pos);
		}
	}
	for(int i=1;i<=n;i++)
	{
		cout<<ans[i]<<endl;
	}
	return 0;
}

2022/10/5 09:51
加载中...