给定一个长度为N的字符串S。
每次可以从S的开头或者结尾取出一个字符,放到一个T字符串的尾部。
输出字典序最小的T字符串,每80个字符换一行输出。
输入
第一行一个整数N(1 le N le 2000)N(1≤N≤2000)。
有N个字符,表示字符串S,只由大小写字母组成。
输出
每80字符一行输出最小字典序T。
样例
输入
复制
6 ACDBCB
输出
复制
ABCBCD
提示
子任务1,20分,1 le N le 101≤N≤10。
子任务2,30分,1 le N le 1001≤N≤100。
子任务3,50分,1 le N le 20001≤N≤2000。
#pragma warning(disable:4996) #include <iostream> #include <cstdio> #include <vector> #include <set> #define MAX 2001 using namespace std; bool check(char* s, int l, int r) { while (l <= r && s[l] == s[r]) { l++; r--; } return s[l] < s[r]; } int main() { int n; char s[MAX], t[MAX]; scanf("%d%s", &n, s); int l = 0, r = n - 1; int m = 0; while (l <= r) { t[m++] = check(s, l ,r) ? s[l++] : s[r--]; } for (int i = 0; i < m; i++) { putchar(t[i]); if (i % 80 == 79) { putchar(' '); } } return 0; }