0
已解决
题目描述 Description
现在有一个长度为N的字符串,每次可以从字符串的开头或者结尾挑选一个字符,加到一个新字符串后面,新字符串初始是空串,被挑选的字符要在原串里删除。要使最终的新字符串字典序最小,求出这个字典序最小的新字符串。每行最多输出80个字符。
字典序是单词按字母顺序排列的方法。例如,“B"的字典序大于"A”;“ABD"的字典序大于"ABC”。
输入描述 Input Description
第一行,一个整数,N
接下来N行,每行一个大写字母
输出描述 Output Description
输出字典序最小的新字符串
WA30
#include<bits/stdc++.h>
#include<iostream>
#pragma GCC optimize(3)
using namespace std;
char s[10000005];
int n;
bool f(int i,int j){
if(s[i]>s[j]) return true;
if(s[i]<s[j]) return false;
while(s[i]==s[j]&&i<=j){
i++;
j--;
}
if(s[i]>s[j]) return true;
else return false;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>s[i];
}
int i=1,j=n;
while(i<=j){
if(f(i,j)){
cout<<s[j];
j--;
}else{
cout<<s[i];
i++;
}
}
return 0;
}
