Best Cow Line, Gold
Time Limit: 5000MS   Memory Limit: 65536K
Total Submissions: 6038   Accepted: 2087

Description

FJ is about to take his N (1 ≤ N ≤ 30,000) cows to the annual"Farmer of the Year" competition. In this contest every farmer arranges his cows in a line and herds them past the judges.

The contest organizers adopted a new registration scheme this year: simply register the initial letter of every cow in the order they will appear (i.e., If FJ takes Bessie, Sylvia, and Dora in that order he just registers BSD). After the registration phase ends, every group is judged in increasing lexicographic order according to the string of the initials of the cows' names.

FJ is very busy this year and has to hurry back to his farm, so he wants to be judged as early as possible. He decides to rearrange his cows, who have already lined up, before registering them.

FJ marks a location for a new line of the competing cows. He then proceeds to marshal the cows from the old line to the new one by repeatedly sending either the first or last cow in the (remainder of the) original line to the end of the new line. When he's finished, FJ takes his cows for registration in this new order.

Given the initial order of his cows, determine the least lexicographic string of initials he can make this way.

Input

* Line 1: A single integer: N
* Lines 2..N+1: Line i+1 contains a single initial ('A'..'Z') of the cow in the ith position in the original line

Output

The least lexicographic string he can make. Every line (except perhaps the last one) contains the initials of 80 cows ('A'..'Z') in the new line.

Sample Input

6
A
C
D
B
C
B

Sample Output

ABCBCD

参考代码:

#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
int main()
{
    //freopen("in.txt","r",stdin);
    int N;
    cin>>N;
    char in[N];
    char out[N+2];
    int i=0;char c;
    while(cin>>c){in[i++]=c;}
    in[i]='\0';
    int pos1=0;int pos2=strlen(in)-1;int pos=0;
    while(pos1<=pos2)
    {
    if(in[pos1]<in[pos2])out[pos++]=in[pos1++];
    else if(in[pos1]>in[pos2])out[pos++]=in[pos2--];
    else //如果in[pos1]==in[pos2]
    {
        int t1=pos1;int t2=pos2;
        while(in[t1]==in[t2]&&t1<=t2)
        {
            t1++;t2--;
        }
        if(in[t1]==in[t2])out[pos++]=in[pos1++];
        else if(in[t1]<in[t2])out[pos++]=in[pos1++];
        else out[pos++]=in[pos2--];
    }
    }
    out[pos]='\0';
    int cnt=0;
    while(out[cnt]!='\0')
    {
        cout<<out[cnt];cnt++;
        if(cnt%80==0)cout<<endl;
    }
    return 0;
}

最新文章

  1. python正则表达式
  2. SVN+Jenkins或CCNET环境部署图
  3. Windows调试学习笔记:(二)WinDBG调试.NET程序示例
  4. 使用Html5+C#+微信 开发移动端游戏详细教程:(六)游戏界面布局与性能优化
  5. 五种情况下会刷新控件状态(刷新所有子FWinControls的显示)——从DFM读取数据时、新增加子控件时、重新创建当前控件的句柄时、设置父控件时、显示状态被改变时
  6. HttpServletRequest对象(一)
  7. Ionic android 底部tabs
  8. H5的表格
  9. Selenium 3----窗口截图+关闭浏览器
  10. 安卓加载网络图片OOM问题解决
  11. Android Studio 调试各种国产手机经验总结
  12. https://stackoverflow.com/questions/10423781/sql-data-range-min-max-category
  13. 【WPF】【UWP】借鉴 asp.net core 管道处理模型打造图片缓存控件 ImageEx
  14. 201621123018《java程序设计》第14周作业总结
  15. VUE2.0 饿了吗视频学习笔记(一):VUE示例data.json
  16. Java Object类及其equals方法
  17. apiCloud 下拉刷新
  18. [Php] Deprecated: Function ereg_replace() is deprecated
  19. 设计模式PHP篇(二)————工厂模式
  20. WPF &amp; EF &amp; Prism useful links

热门文章

  1. SpreadJS 纯前端表格控件 V12.2 发布更新
  2. 双元素非递增(容斥)--Number Of Permutations Educational Codeforces Round 71 (Rated for Div. 2)
  3. redis 学习(12)-- redis 发布订阅
  4. 关于redis的几件小事(六)redis的持久化
  5. python之time
  6. avascript中实现垃圾桶的功能
  7. jQuery 遍历 - 祖先
  8. sftp及两种连接模式简介
  9. 2019.10.28sql注入工具
  10. (转) Linux安装启动FTP服务