当前位置: 首页 > 工具软件 > Hotelier > 使用案例 >

CodeForce Round #578 div.2 A题. Hotelier

姚晋
2023-12-01

A. Hotelier
【中文翻译版】
Amugae酒店拥有10间客房。客房从左到右依次为0到9。
酒店有两个入口 - 一个来自左端,另一个来自右端。当顾客通过左入口到达酒店时,他们被分配到最靠近左入口的空房间。类似地,当顾客通过右入口到达酒店时,他们被分配到最靠近右入口的空房间。
有一天,Amugae失去了房间分配清单。值得庆幸的是,Amugae的记忆非常完美,他记得所有顾客:当顾客到达时,从哪个入口到他们离开酒店。最初酒店是空的。编写一个程序,从Amugae的记忆中恢复房间分配列表。

输入
第一行由整数n(1≤n≤105)组成,是Amugae记忆中的事件数。
第二行包含一个长度为n的字符串,按时间顺序描述事件。每个字符代表:
‘L’:顾客​​从左入口到达。
‘R’:客户从右入口到达。
‘0’,‘1’,…,‘9’:房间x(分别为0,1,…,9)的客户离开。
当客户到达时,保证至少有一个空房间,并且当给出x(0,1,…,9)时,房间x中有客户。此外,所有房间最初都是空的。

输出
在唯一的一行,输出酒店房间的分配状态,从0号房间到9号房间。代表空房间为“0”,占用房间为“1”,没有空格。

CASE_1
输入

8
LLRL1RL1

输出

1010000011

CASE_2
输入

9
L0L0LLRR9

输出

1100000010

思路
简单的模拟题

放代码

#include<iostream>
#include<vector>
using namespace std;
int a[10];
void l(void){
	for(int i=0;i<10;i++){
		if(a[i]==0){a[i]=1;
		break;
		}
	}
}
void r(void){
	for(int i=9;i>=0;i--){
		if(a[i]==0){a[i]=1;
		break;
		}
	}
}
int main(){
	int n,nu;
	char po;
	cin>>n;
	for(int i=0;i<n;i++){
		cin>>po;
		if(po=='L')l();
		if(po=='R')r();
		if(int(po)>=48&&int(po)<=57)nu=int(po)-'0',a[nu]=0;
	
	}
		for(int i=0;i<10;i++)cout<<a[i];
	return 0;
}

只不过速度有点慢…

 类似资料: