比赛 20120419x 评测结果 AAAWWTTTTT
题目名称 BOB还是BBO 最终得分 30
用户昵称 kaaala 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2012-04-19 15:52:38
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<set>

using namespace std;

const int oo=~0u>>2;

set<int>t;
set<int>::iterator it,pt;
int N,cmn,pre;
char ch[30000];

int main()
{
	freopen("bob.in","r",stdin);
	freopen("bob.out","w",stdout);
	scanf("%d\n",&N);
	for(int i=1;i<=N;i++)
	{
		t.clear();
		cmn=oo;
		scanf("%s",ch);
		int len=strlen(ch);
		for(int j=0;j<len;j++)
			ch[j+len]=ch[j];
		for(int j=0;j<len;j++)
			if(ch[j]<cmn)
			{
				cmn=ch[j];
				t.clear();
				t.insert(j);
			}
			else if(ch[j]==cmn)
				t.insert(j);
		for(int j=1;j<len*2;j++)
		{
			it=t.begin();
			pre=ch[*it+j];
			pt=it;
			it++;
			for(;it!=t.end()&&t.size()!=1;it++)
			{
				if(ch[*it+j]<pre)
				{
					t.erase(pt);
					pt=it;
					pre=ch[*it];
				}
				else if(ch[*it+j]>pre)
					t.erase(it);
				else if(*it+j==len*2-1&&ch[*it+j]==pre)
				{
					for(int k=*it;k<*it+len;k++)
						printf("%c",ch[k]);
					printf("\n");
					goto FFF;
				}
			}
			if(t.size()==1)
			{
				it=t.begin();
				for(int j=*it;j<*it+len;j++)
					printf("%c",ch[j]);
				printf("\n");
				goto FFF;
			}
		}
		FFF:;
	}
	return 0;
}