Problem Statement
Iroha has a sequence of N strings S1, S2, ..., SN. The length of each string is L.
She will concatenate all of the strings in some order, to produce a long string.
Among all strings that she can produce in this way, find the lexicographically smallest one.
Here, a string s=s1s2s3...sn is lexicographically smaller than another string t=t1t2t3...tm if and only if one of the following holds:
- There exists an index i(1≦i≦min(n,m)), such thatsj=tj for all indices j(1≦j<i), and si<ti.
- si=ti for all integers i(1≦i≦min(n,m)), and n<m.
Constraints
- 1 ≦ N, L ≦ 1001≦N,L≦100
- For each ii, the length of Si equals L.
- For each ii, S_iSi consists of lowercase letters.
Input
The input is given from Standard Input in the following format:
N L S1 S2 : SN
Output
Print the lexicographically smallest string that Iroha can produce.
Sample 1
Inputcopy | Outputcopy |
---|---|
3 3 dxx axx cxx | axxcxxdxx |
The following order should be used: axx
, cxx
, dxx
.
题目要求:给定N个字符串,每个字符串长度为L,要求这些字符串拼接后的字符串字典序最小
做法:既然要求答案要求最小字典序,那么我们可以直接把所有字符串进行一个字典序的排序,然后顺序输出即可,感兴趣的同学可以自行改百度字典序排序,这里笔者比较懒所以用sort排序(OMO)
#include<bits/stdc++.h>
#define ll long long
using namespace std;
string s[101];
bool used[1001];
bool cmp(string a,string b)
{
return a<b;
}
int main()
{
int n,l;
cin>>n>>l;
for(int i=0;i<n;i++)
{
cin>>s[i];
}
sort(s,s+n,cmp);
for(int i=0;i<n;i++)cout<<s[i];
}