记录编号 41976 评测结果 AAAAA
题目名称 [焦作一中2012] 轮盘游戏 最终得分 100
用户昵称 GravatarMakazeu 是否通过 通过
代码语言 C++ 运行时间 0.002 s
提交时间 2012-09-08 16:40:57 内存使用 0.29 MiB
显示代码纯文本
#include <cstdlib>
#include <cstdio>
#include <cstring>
using namespace std;
const int MAXN=30;
const int MAXM=111;
int wheel[MAXN],N,M;
int trans[MAXM],flags[MAXN];char trc[MAXM];

inline void GetNum(int&n,int p)
{
	n+=p;n%=N;if(n==0) n=N;
}

inline void print(int k)
{
	if(k!=-1) printf("%c",k);
	else printf("?");
}

int main()
{
	freopen("wheel.in","r",stdin);
	freopen("wheel.out","w",stdout);
	while(scanf("%d %d\n",&N,&M)!=EOF)
	{
		int now=1;bool flag=1;
		for(int i=1;i<=N;i++) wheel[i]=-1;
		for(int i=0;i<=25;i++) flags[i]=0;
		for(int i=1;i<=M;i++) scanf("%d %c\n",&trans[i],&trc[i]);
		for(int i=1;i<=M;i++)
		{
			GetNum(now,trans[i]);
			if(wheel[now]!=-1 && wheel[now]!=trc[i]) {flag=0;break;}
			if(wheel[now]==trc[i]) continue;
			if(flags[trc[i]-'A']==1) {flag=0;break;}
			wheel[now]=trc[i]; flags[trc[i]-'A']=1;
		}
		if(!flag) {printf("!\n");continue;}
		for(int i=now;i>=1;i--) print(wheel[i]);
		for(int i=N;i>=now+1;i--) print(wheel[i]);
		printf("\n");
	}
	return 0;
}