Suffix Structures

Time Limit:1000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u

Submit



Status



Practice



CodeForces 448B

Description

Bizon the Champion isn't just a bison. He also is a favorite of the "Bizons" team.



At a competition the "Bizons" got the following problem: "You are given two distinct words (strings of English letters), s and t. You need to transform word s into word t". The task looked simple to the guys because they know the suffix data structures well.
Bizon Senior loves suffix automaton. By applying it once to a string, he can remove from this string any single character. Bizon Middle knows suffix array well. By applying it once to a string, he can swap any two characters of this string. The guys do not
know anything about the suffix tree, but it can help them do much more.



Bizon the Champion wonders whether the "Bizons" can solve the problem. Perhaps, the solution do not require both data structures. Find out whether the guys can solve the problem and if they can, how do they do it?

Can they solve it either only with use of suffix
automaton or only with use of suffix array or they need both structures?

Note that any structure may be used an unlimited number of times, the structures may be used in any order.



Input

The first line contains a non-empty word s. The second line contains a non-empty word t. Words s and t are different. Each word consists only of lowercase English letters. Each word contains at most 100 letters.



Output

In the single line print the answer to the problem. Print "need tree" (without the quotes) if word s cannot be transformed into word t even with use of both suffix array and suffix automaton. Print "automaton" (without the quotes) if you need only the suffix
automaton to solve the problem. Print "array" (without the quotes) if you need only the suffix array to solve the problem. Print "both" (without the quotes), if you need both data structures to solve the problem.



It's guaranteed that if you can solve the problem only with use of suffix array, then it is impossible to solve it only with use of suffix automaton. This is also true for suffix automaton.



Sample Input

Input

automaton

tomat

Output

automaton

Input

array

arary

Output

array

Input

both

hot

Output

both

Input

need

tree

Output

need tree

Hint

In the third sample you can act like that: first transform "both" into "oth" by removing the first character using the suffix automaton and then make two swaps of the string using the suffix array and get "hot".

<span style="color:#3333ff;">/*
—————————————————————————————————————————————————————————————————————— author : Grant Yuan
time : 2014.7.22
algorithm : 字符串匹配
explain : 对两个字符串中的每一个字符的个数进行统计,假设第二个字符串中有字符的个数
比第一个字符串中对应字符的个数多。则输出“need tree”。
否则,用字符串B在A中进行单个字符的一一匹配。假设可以匹配下来,则为“automaton”,否则,假设两个字符串的长度
相等。则为“array”,假设前面条件都不满足,则为“both”。 ——————————————————————————————————————————————————————————————————————
*/ #include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm> using namespace std; int a[26];
char s1[103],s2[103];
int l1,l2; int main()
{
while(~scanf("%s%s",&s1,&s2)){
l1=strlen(s1);
l2=strlen(s2);
memset(a,0,sizeof(a));
int t=0;
for(int i=0;i<l1;i++)
{
a[s1[i]-'a']++;
}
for(int i=0;i<l2;i++)
a[s2[i]-'a']--;
int flag1=1;
for(int i=0;i<26;i++){
if(a[i]<0)
flag1=0;
}
if(flag1==0)
printf("need tree\n");
else {
int t=0;
for(int i=0;i<l1;i++)
if(s1[i]==s2[t]) t++;
if(t==l2)
printf("automaton\n");
else
if(l1==l2) printf("array\n");
else
printf("both\n");
}
}
return 0;
}
</span>

【组队赛三】-C cf448B的更多相关文章

  1. 【组队赛三】-D 优先队列 cf446B

    DZY Loves Modification Time Limit:2000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u Sub ...

  2. 第三次组队赛 (DFS&BFS)

    网站:CSUST 8月1日 先总结下,不得不说死的很惨,又是第三就不说了,一共7道题,AC了5道,但是有一个组三个人是做的个人赛,有两人AK了.......Orz,然后深搜还是大问题,宽搜倒是不急了. ...

  3. CUGBACM_Summer_Tranning 组队赛解题报告

    组队赛解题报告: CUGBACM_Summer_Tranning 6:组队赛第六场 CUGBACM_Summer_Tranning 5:组队赛第五场 CUGBACM_Summer_Tranning 4 ...

  4. 常用 Gulp 插件汇总 —— 基于 Gulp 的前端集成解决方案(三)

    前两篇文章讨论了 Gulp 的安装部署及基本概念,借助于 Gulp 强大的 插件生态 可以完成很多常见的和不常见的任务.本文主要汇总常用的 Gulp 插件及其基本使用,需要读者对 Gulp 有一个基本 ...

  5. 【原】FMDB源码阅读(三)

    [原]FMDB源码阅读(三) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 FMDB比较优秀的地方就在于对多线程的处理.所以这一篇主要是研究FMDB的多线程处理的实现.而 ...

  6. Jquery的点击事件,三句代码完成全选事件

    先来看一下Js和Jquery的点击事件 举两个简单的例子 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&q ...

  7. node.js学习(三)简单的node程序&&模块简单使用&&commonJS规范&&深入理解模块原理

    一.一个简单的node程序 1.新建一个txt文件 2.修改后缀 修改之后会弹出这个,点击"是" 3.运行test.js 源文件 使用node.js运行之后的. 如果该路径下没有该 ...

  8. 简谈百度坐标反转至WGS84的三种思路

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 基于百度地图进行数据展示是目前项目中常见场景,但是因为百度地图 ...

  9. 一起学 Java(三) 集合框架、数据结构、泛型

    一.Java 集合框架 集合框架是一个用来代表和操纵集合的统一架构.所有的集合框架都包含如下内容: 接口:是代表集合的抽象数据类型.接口允许集合独立操纵其代表的细节.在面向对象的语言,接口通常形成一个 ...

随机推荐

  1. 一个label 里面 显示中文和英文不同颜色

    - (void)viewDidLoad {    [super viewDidLoad];    self.view.backgroundColor = [UIColor yellowColor];  ...

  2. iOS实践04

    第四天 微博数据展示:获取服务器数据,json数据的解析,MVC的使用,自定义cell高度的计算,一些分类的设计.已经是第四天了,虽然每天都有课程,但这个东西也基本完成了一大半吧,一些忘掉的知识也捡起 ...

  3. 技术是容易学会的(Copy)

    1)自信第一.自信这东西很是奇怪,人有可能一开始会莫明其妙的自信,但一切都从这开始的.你觉得自己行你就一定会变得行,反之,如果觉得自已不行,那一定会不行.信心是我们转动飞轮的第一步,有了这一步我们的能 ...

  4. C#通过WebBrowser快速扒站思路积累大量着陆页列表

    现在工作方向已经越来越倾向于项目产品运营相关的东西.对线上运营也有了一定程度的了解. 配合一些技术性的操作,能极大的便利工作中的各种高难度任务,快速提升自我,积累丰富的经验和资源. 以近期制作LP为例 ...

  5. Java 比较两日期相差天数

    (版本1) publicstaticint getIntervalDays(Date fDate, Date oDate) { if (null == fDate || null == oDate) ...

  6. iter, yield与enumerate的实现

    模拟实现一个enumerate函数 def myEnumerate(seq, start=0): results = [] n = start for i in seq: results.append ...

  7. step_by_step_G+入门-在线服务

    第一步:先大概介绍下我们的窗体的布局框架,窗体大体分为以下3大块: 顶部:也就是大的模块划分(比如首页,软件管家,在线服务等) 内容区域:根据选择的不同的顶部模块,进行不同的内容展示: 底部:设置,下 ...

  8. VC中判断指定窗口是否被其他窗口遮挡

    本来是想判断当前窗口是否在最前面,无奈办法用尽就是不行,于是想换个思路:判断指定窗口是否被其他窗口遮挡.然后掘网三尺,找到了这个: bool CTestTray2Dlg::IsCoveredByOth ...

  9. C++模板:二分图匹配

    int Dfs(int k){ for(int i=0;i<v[k].size();i++){ int a=v[k][i]; if(used[a]==0){ used[a]=1; if(link ...

  10. 测试横竖屏切换时activity 的生命周期

    对于这个面试题,相信大家都见过,网上给出的答案是: 1.不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次 2.设 ...